高精度加法
1 #include <iostream> 2 using namespace std; 3 int main() 4 { 5 char a[1000],b[1000],sum[1001]; 6 int jw=0; 7 int n=0,r=1; 8 cin>>n; 9 while(cin>>a>>b) 10 { 11 int i=strlen(a); 12 int j=strlen(b); 13 int k=strlen(a)>strlen(b)?strlen(a):strlen(b); 14 for(int m=0;m<=k;m++) 15 { 16 if(i!=0&&j!=0) 17 { 18 sum[m]=((a[i-1]-48)+(b[j-1]-48)+jw)+48; 19 i=i-1; 20 j=j-1; 21 if(sum[m]-(48+9)>0) 22 { 23 jw=1; 24 sum[m]= sum[m]-10; 25 } 26 else 27 jw=0; 28 } 29 else if(i!=0&&j==0) 30 { 31 sum[m]=((a[i-1]-48)+jw)+48; 32 i=i-1; 33 if(sum[m]-(48+9)>0) 34 { 35 jw=1; 36 sum[m]= sum[m]-10; 37 } 38 else 39 jw=0; 40 } 41 else if(i==0&&j!=0) 42 { 43 sum[m]=((b[j-1]-48)+jw)+48; 44 j=j-1; 45 if(sum[m]-(48+9)>0) 46 { 47 jw=1; 48 sum[m]= sum[m]-10; 49 } 50 else 51 jw=0; 52 } 53 else if(i==0&&j==0) 54 { 55 if(jw==1) 56 { 57 sum[m]=1+48; 58 } 59 else 60 sum[m]=0+48; 61 jw=0; 62 } 63 } 64 cout<<"Case "<<r<<":"<<endl<<a<<" + "<<b<<" = "; 65 r++; 66 if(sum[k]==1+48) 67 { 68 for(int l=k;l>=0;l--) 69 { 70 cout<<sum[l]; 71 } 72 cout<<endl; 73 } 74 else 75 { 76 for(int l=k-1;l>=0;l--) 77 { 78 cout<<sum[l]; 79 } 80 cout<<endl; 81 } 82 if(r>n) 83 break; 84 cout<<endl; 85 } 86 return 0; 87 }
杭电ACM1002

浙公网安备 33010602011771号