高精度加法

 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 }
View Code

杭电ACM1002

posted @ 2013-11-24 23:28  JustRight  阅读(243)  评论(2)    收藏  举报