HUD-1002(大位数加法)

来源:互联网 发布:网络彩票赌博怎么举报 编辑:程序博客网 时间:2024/05/16 11:09

思想: 运用字符串和整数的转换关系,然后模拟手写运算从后往前依次计算;详细参考【 大数加减乘除】

AC代码;

 #include <iostream> #include <cstdio> #include <cstring> #include <map> #include <algorithm> #include <sstream> #include <cctype> #include <set> #include <string> #include <stack> #include <vector>using namespace std;const int N = 1050;typedef long long LL;const int inf = 0x3f3f3f3f;LL numA[N];LL numB[N];void resetnumA(string numAStr){    memset(numA,0,N*sizeof(LL));    for(int i=0;i<numAStr.length();i++)    {        numA[i]=numAStr[numAStr.length()-i-1]-'0';    }}void resetnumB(string numBStr){    memset(numB,0,N*sizeof(LL));    for(int i=0;i <numBStr.length();i++)    {        numB[i]=numBStr[numBStr.length()-i-1]-'0';    }}string getnumString(LL *num){    string  numString;    int f=0;    for(int i=N-1;i>=0;i--)    {        if(num[i]!=0)        f=1;        if(f)          numString+=num[i]+'0';    }    return numString;}string   plusn(string numAStr,string numBStr){    resetnumA(numAStr);    resetnumB(numBStr);    for(int i=0;i<N;i++)    {        numA[i]=numA[i]+numB[i];        if(numA[i]>9)        {            numA[i+1]++;            numA[i]-=10;        }    }    return getnumString(numA);}int main(){    string numAStr,numBStr;   int t,y=1;   cin>>t;   while(t--)   {   cin>>numAStr>>numBStr;   cout<<"Case "<<y++<<":"<<endl;   cout<<numAStr<<" + "<<numBStr<<" = "<<plusn(numAStr,numBStr)<<endl;   if(t) cout<<endl;   }   return 0;}
原创粉丝点击