HDOJ 1002 A+B ProblemII簡単な解題報告

4908 ワード


何も言うことはありませんが、何度もやってみました.キャリーを処理すればOKです.次は私のACのコードです.
#include <iostream>

using namespace std; int main() { int cas,cas2,a,b,lena,lenb,flag,i,temp; char s[2][1010],s3[1010]; cin>>cas; cas2=cas; while(cas--) { cin>>s[0]>>s[1]; a=(strlen(s[1])>strlen(s[0])); b=1-a; lena=strlen(s[a]); lenb=strlen(s[b]); memset(s3,0,sizeof(s3)); flag=0; temp=0; for(i=0;i<lenb;i++) { temp=s[a][lena-1-i]-'0'+s[b][lenb-1-i]-'0'+flag; s3[i]=temp%10+'0'; flag=(temp>9); } for(;i<lena;i++) { temp=s[a][lena-1-i]-'0'+flag; s3[i]=temp%10+'0'; flag=(temp>9); } if(flag) { s3[lena++]='1'; s3[lena]='\0'; } for(i=0;i<lena/2;i++) { temp=s3[i]; s3[i]=s3[lena-1-i]; s3[lena-1-i]=temp; } cout<<"Case "<<cas2-cas<<":
"; cout<<s[0]<<" + "<<s[1]<<" = "<<s3<<endl; if(cas!=0) cout<<endl; } }