高精度加法

 1 #include <cstring>
 2 #include <cstdio>
 3 #include <iostream>
 4 #include <climits>
 5 using namespace std;
 6 void swap(int &a,int &b)
 7 {
 8     int t=a;
 9     a=b;
10     b=t;
11 }
12 int main()
13 {
14     char A[100],B[100];
15     cin>>A>>B;
16     int lena=strlen(A),lenb=strlen(B);
17     for(int i = 0,j=lena-1;i<j;++i,--j)
18     {
19         swap(A[i],A[j]);
20     }
21     for(int i = 0,j=lenb-1;i<j;++i,--j)
22     {
23         swap(B[i],B[j]);
24     }
25     for(int i=0;i<lena;++i) A[i]-='0';
26     for(int i=0;i<lenb;++i) B[i]-='0';
27 
28     int C[100],c=0;
29     
30     int i = 0 ,j=0,k=0;
31     while(i<lena && j<lenb)
32     {
33         C[k]=A[i]+B[j]+c;
34         c=C[k]/10;
35         C[k]%=10;
36         ++i;
37         ++j;
38         ++k;
39     }
40     while(i<lena )
41     {
42         C[k]=A[i]+c;
43         c=C[k]/10;
44         C[k]%=10;
45         ++i; 
46         ++k; 
47     }
48     while(j<lenb )
49     {
50         C[k]=B[j]+c;
51         c=C[k]/10;
52         C[k]%=10;    
53         ++j;
54         ++k;
55     }
56     if(c) C[k++]=c;
57     for(int m=k-1;m>=0;--m)
58         cout<<C[m];
59     cout<<endl;
60     return 0;
61 }
62 //
63 //
64 //#include<iostream>
65 //#include<cstdio>
66 //#include<cstring>
67 //using namespace std;
68 //int main()
69 //{
70 //    char a1[100],b1[100];
71 //      int a[100],b[100],c[100],lena,lenb,lenc,i,x;
72 //      memset(a,0,sizeof(a));
73 //      memset(b,0,sizeof(b));
74 //      memset(c,0,sizeof(c));
75 //      gets(a1);
76 //     gets(b1);                                                         //输入加数与被加数
77 //      lena=strlen(a1);
78 //      lenb=strlen(b1);
79 //      for (i=0;i<=lena-1;i++) a[lena-i]=a1[i]-48;        //加数放入a数组
80 //          for (i=0;i<=lenb-1;i++) b[lenb-i]=b1[i]-48;  //加数放入b数组
81 //      lenc =1;
82 //      x=0;
83 //  
84 //    while (lenc <=lena||lenc <=lenb)
85 //    {
86 //          c[lenc]=a[lenc]+b[lenc]+x;     //两数相加
87 //          x=c[lenc]/10;
88 //          c[lenc]%=10;
89 //               lenc++;
90 //    }
91 //    c[lenc]=x; 
92 //    if (c[lenc]==0)
93 //        lenc--;                                    //处理最高进位
94 //    for (i=lenc;i>=1;i--) 
95 //    cout<<c[i];                                     //输出结果
96 //    cout<<endl;
97 //    return 0;
98 //} 

猜你喜欢

转载自www.cnblogs.com/1129-tangqiyuan/p/9009275.html