http://acm.hdu.edu.cn/showproblem.php?pid=1002
这是一个大数相加问题,真是困扰我多年啊~~。。。。。。不知道下次做的时候能不能快速做出来~~废话少说,上代码:
#include<iostream>
#include<string>
#define MAX 1000
using namespace std;
int main(){
int i,j,T,cont=0;
cin>>T;
int A[MAX]={0},B[MAX]={0};
char a[MAX],b[MAX];
while(T--){
cin>>a>>b;
int alen=strlen(a);
int blen=strlen(b);
for(i=0;i<MAX;i++){
A[i]=0;
B[i]=0;
}
for(i=0;i<alen;++i)
A[i]=a[alen-1-i]-48;
for(i=0;i<blen;++i)
B[i]=b[blen-1-i]-48;
int c=0; //进位
for(i=0;i<MAX;++i){
int s=A[i]+B[i]+c;
A[i]=s%10; //最后的数存到 A数组中 从左向右个十百千的顺序。。。。
c=s/10;
}
//输出
cout<<"Case "<<++cont<<":"<<endl;
for(i=0;i<alen;++i)
cout<<a[i];
cout<<" + ";
for(i=0;i<blen;i++)
cout<<b[i];
cout<<" = ";
for(i=MAX-1;i>=0;--i) if(A[i])break; //如果 遇到非零数,即第一个数,向下执行。
for(j=i;j>=0;j--){
cout<<A[j];
}
cout<<endl;
if(T) cout<<endl;
}
}