杭电ACM 1002 A + B Problem II

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;
	}
	
	}




 


你可能感兴趣的:(c)