大数加法运算,自测没有前导0的干扰,还算不是很坑的一个大数加法的运算。。。一直WA因为开了cin加速还用了printf和cout两种输出。。。以后注意好像是都统一就行。。。要么都用printf要么都用cout???反正都用cout就绝对可以。
思路是先比较a和b的大小是不是位数相同,然后位数小的加前导0直到位数相同为止,然后倒序相加记录进位的数就行了。
我的代码(思路借鉴别人)
#include <iostream>
#include <algorithm>
using namespace std;
main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
string a,b;
string aa,bb;
cin>>a>>b;
aa=a;bb=b;
if(a.size()>b.size())
{
for(int i=0;a.size()!=b.size();i++)
b='0'+b;
}
else if(a.size()<b.size())
{
for(int i=0;a.size()!=b.size();i++)
a='0'+a;
}
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
string c="";
int jw=0;
int num;
for(int i=0;i<a.size();i++)
{
num=a[i]-'0'+b[i]-'0'+jw;
jw=num/10;
num%=10;
c=char(num+'0')+c;
}
if(jw!=0)
c=char(jw+'0')+c;
cout<<"Case "<<i<<":"<<endl;
cout<<aa<<" + "<<bb<<" = "<<c<<endl;
if(i!=n)
cout<<endl;
}
}