C++临走前奉献:大数加法

来源:百度知道 编辑:UC知道 时间:2024/05/05 19:09:43
输入至多100行的文本,每行是一个至多100位的十进制无符号大整数,最后的输入行为零。要求计算出这些大整数的和,并以十进制方式显示。

示例输入:

123456789012345678901234567890
123456789012345678901234567890
123456789012345678901234567890
0

示例输出:

370370367037037036703703703670

#include <cstdio>
#include <cstring>
using namespace std;
int main()
{
const int n = 100;// 数字的最大位数
const int b = 10; // 数字的进制
char r[n+1] = {0};// 加数
char s[n+1] = {0};// 求和
while (scanf("%s", r) && strcmp(r, "0")) { // 对每一个加数...
for (int i = strlen(r)-1, j = n-1; i >= 0; i--, j--) { // 中的每一个数字位
r[i] -= '0'; // char -> int
for (int k = j, c = 0; 1; k--) { // update s
const int sum = (!c ? r[i] : 0) + s[k] + c; // local sum
if ((c = sum > b - 1)) s[k] = sum - b; // do update
else { s[k] = sum; break; } // e

大数加法?

记得回来给分啊,我这么支持你。
正好还收藏了呵呵。

李彦宏:干什么?????这么热闹

行了 我全看见了

。。。。。。。。。收藏了

天呐..

我不会!