A+B大数运算

扫码查看

基础加法大数运算:

[https://vjudge.net/problem/HDU-1002]

题目:

输入两个长度不超过1000的整数求出sum。

思路:

由于数字很大不能直接加,用字符串形式输入,分离每个字符(a[i]=sa[i]-'0',b[i]同理),并分别存入两个数组,再选取len=max(alen,blen);

从个位开始进行加,注意进位即可。

代码:

/*A+B大数运算*/
#include<bits/stdc++.h>
using namespace std;
int main(){
string sa,sb;
int a[1005],b[1005];
int t,i,j;
cin>>t;
for(int k=1;k<=t;k++){
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
j=0;
cin>>sa>>sb;
int alen=sa.length(),blen=sb.length();
for(i=alen-1;i>=0;i--)
a[j++]=sa[i]-'0';
j=0;
for(i=blen-1;i>=0;i--)
b[j++]=sb[i]-'0';
int tem=0;
int len=max(alen,blen);
for(i=0;i<len;i++){
a[i]+=b[i]+tem;
tem=a[i]/10;
a[i]%=10;
}
if(tem>0) a[len++]=tem;
if(k!=1)
cout<<endl;
printf("Case %d:\n", k);
cout<<sa<<" + "<<sb<<" = ";
for(i=len-1;i>=0;i--)
cout<<a[i];
cout<<endl;
}
return 0;
}
05-07 14:53
查看更多