杭电水题 1002 大数加法
杭电acm1002 A?+?B?Problem?II
Input Output Sample?Input Sample?Output Case?2: 注意输出时的格式问题 代码一: #include?<iostream> #include?<string.h> using?namespace?std; ? int?main() { char?str1[1000],str2[1000],str3[1000],str4[1000]; char?sum1[1000],sum2[1000]; int?n; int?p?=?1; int?temp; int?flag?=?0; int?len1?=?0; int?len2?=?0; cin>>n; while(n--) { flag?=?0; memset(str1,'0',sizeof(str1)); memset(str2,sizeof(str2)); memset(str3,sizeof(str3)); memset(str4,sizeof(str4)); memset(sum1,sizeof(sum1)); memset(sum2,' ',sizeof(sum2)); cin>>str1; cin>>str2; ????????len1?=?strlen(str1); len2?=?strlen(str2); for(int?i?=?0;i?<?len1;i++) { str3[i]?=?str1[len1-1-i]; } for(int?j?=?0;j?<?len2;j++) { str4[j]?=?str2[len2-1-j]; } ? if(len1?>?len2) { for(int?i?=?0;i?<?len1;i++) { temp?=?sum1[i]?-?'0'; sum1[i]?=?(temp?+?(str3[i]?-'0')?+?(str4[i]?-?'0'))%10?+?'0'; if(((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?>?10)||((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?==?10)) { sum1[i+1]++; } } flag?=?0; if(sum1[len1]?!=?'0') flag?=?1; for(int?m?=?0;m?<?len1?+?flag;m++) { sum2[m]?=?sum1[len1?+?flag?-?1?-?m]; } } else { for(int?i?=?0;i?<?len2;i++) { temp?=?sum1[i]?-'0'; sum1[i]?=?(temp?+?(str3[i]?-'0')?+?(str4[i]?-?'0'))%10?+?'0'; if(((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?>?10)||((temp?+?str3[i]?-'0'?+?str4[i]?-?'0')?==?10)) { sum1[i+1]++; } } flag?=?0; if(sum1[len2]?!=?'0') flag?=?1; for(int?m?=?0;m?<?len2?+?flag;m++) { sum2[m]?=?sum1[len2?+?flag?-?1?-?m]; } } if(n?==?0) { cout<<"Case?"<<p++<<":"<<endl; cout<<str1<<"?+?"<<str2<<"?=?"<<sum2<<endl; } else { cout<<"Case?"<<p++<<":"<<endl; cout<<str1<<"?+?"<<str2<<"?=?"<<sum2<<endl<<endl; } } return?0; } 代码2: #include<stdio.h> #include<string.h> int?shu(char?a) { ????return?(a-'0'); } int?main(){ ????char?a[1000],b[1000]; ????int?num[1001]; ????int?n,i,j=1,al,bl,k,t; ????scanf("%d",&n); ????while(n--) ????{ ???????getchar(); ????????if(j!=1) ???????printf("n"); ???????scanf("%s",a); ???????al=strlen(a); ???????scanf("%s",b); ???????bl=strlen(b); ???????k=(al>bl)?al:bl; ???????for(i=0;i<=k;i++) ???????num[i]=0; ???????t=k; ???????for(k;al>0&&bl>0;k--) ???????{ ???????????num[k]+=shu(a[--al])+shu(b[--bl]); ? ???????????if(num[k]/10) ???????????{ ???????????????num[k-1]++; ???????????????num[k]%=10; ???????????} ???????} ???????while(al>0) ???????{ ????????????num[k--]+=shu(a[--al]); ????????????if(num[k+1]/10) ???????????{ ???????????????num[k]++; ???????????????num[k+1]%=10; ???????????} ???????} ???????while(bl>0) ???????{ ????????????num[k--]+=shu(b[--bl]); ????????????if(num[k+1]/10) ???????????{ ???????????????num[k]++; ???????????????num[k+1]%=10; ???????????} ???????} ? ???????printf("Case?%d:n",j++); ???????printf("%s?+?%s?=?",a,b); ???????for(i=0;i<=t;i++) ???????{ ???????????if(i==0&&num[i]==0) ???????????i++; ???????????printf("%d",num[i]); ???????} ???????printf("n"); ???} ???return?0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |