1. 程式人生 > >c++大數計算模板

c++大數計算模板

mil span multipl 計算 bsp temp exc log 大數

1.大數相加

string sum(string s1,string s2)  
{  
    if(s1.length()<s2.length())  
    {  
        string temp=s1;  
        s1=s2;  
        s2=temp;  
    }  
    int i,j;  
    for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)  
    {  
        s1[i]=char(s1[i]+(j>=0?s2[j]-0:0));   //註意細節  
        if
(s1[i]-0>=10) { s1[i]=char((s1[i]-0)%10+0); if(i) s1[i-1]++; else s1=1+s1; } } return s1; }

2.大數乘以整形數

string Multiply(string s,int x)  //大數乘以整形數  
{  
    reverse(s.begin(),s.end());  
    int cmp=0;  
    for(int i=0
;i<s.size();i++) { cmp=(s[i]-0)*x+cmp; s[i]=(cmp%10+0); cmp/=10; } while(cmp) { s+=(cmp%10+0); cmp/=10; } reverse(s.begin(),s.end()); return s; }
string Except(string s,int x)  //大數除以整形數  
{  
    int cmp=0
,ok=0; string ans=""; for(int i=0;i<s.size();i++) { cmp=(cmp*10+s[i]-0); if(cmp>=x) { ok=1; ans+=(cmp/x+0); cmp%=x; } else{ if(ok==1) ans+=0; //註意這裏啊。才找出錯誤 } } return ans; }

c++大數計算模板