hdu 1047 Integer Inquiry

本文介绍了一种使用C++实现的大数加法算法。通过字符数组存储大数,并逐位进行相加处理进位,最终输出加法结果。适用于处理传统整型变量无法承载的大数值运算。

大数加法。

注意:

输入
1
00
00
0

输出
0


代码如下:

 1     #include<iostream>
 2     #include<cstring>
 3     using namespace std;
 4     int main()
 5     {
 6         int T, i;
 7         char a[1000];
 8         int sum[1000], b[1000];
 9         cin >> T;
10         while(T--)
11         {
12             memset(a, 0, sizeof(a));
13             memset(b, 0, sizeof(b));
14             memset(sum, 0, sizeof(sum));
15             cin >> a;
16             int j=0;
17             while(strcmp(a, "0"))
18             {
19                 int alen=strlen(a);
20                 for (i=0; i<alen; i++)
21                     b[alen-i-1]=a[i]-'0';
22                 j=0;
23                 for (i=0; i<alen; i++)
24                 {
25                     sum[j]+=b[i];
26                     int k;
27                     if (sum[j] >= 10)
28                     {
29                         sum[j]=sum[j]%10;
30                         sum[j+1]++;
31                     }
32                     j++;
33                     for (k=j; sum[k] >= 10; k++)
34                     {
35                         sum[k]=sum[k]%10;
36                         sum[k+1]++;
37                     }
38                 }
39                 memset(a, 0, sizeof(a));
40                 memset(b, 0, sizeof(b));
41                 cin >> a;
42             }
43             int x;
44             for (x=999; x>=0; x--)
45             {
46                 if (sum[x] != '\0')
47                     break;
48             }
49             if (x < 0) cout << "0";
50             else
51             {
52                 for (i=x; i>=0; i--)
53                     cout << sum[i];
54             }
55             cout << endl;
56             if (T)
57                 cout << endl;
58         }
59         return 0;
60     }

转载于:https://www.cnblogs.com/zrq495/archive/2012/07/25/2608818.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值