这题,很简单,高精度加法。
写的比较冗长。还可以缩短代码。输入的时候,直接加起来,最后取余输出。
下面的是AC的代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; char ans[200]; char temp[150]; void add() { int length1 = strlen(ans); int length2 = strlen(temp); int i, j, k, num[150]; k = 0; for(i = length1 - 1, j = length2 - 1; i >= 0 && j >= 0; i--, j--) { num[k++] = ans[i] + temp[j] - 2 * '0'; } while(i >= 0) num[k++] = ans[i--] - '0'; while(j >= 0) num[k++] = temp[j--] - '0'; for(i = 0; i < k - 1; i++) { if(num[i] >= 10) { num[i + 1] += num[i] / 10; num[i] %= 10; } } if(num[k - 1] >= 10) { num[k] = num[k - 1] / 10; num[k - 1] %= 10; k++; } j = 0; for(i = k - 1; i >= 0; i--) { ans[j++] = num[i] + '0'; } ans[j] = '\0'; } int main() { memset(ans, '\0', sizeof(ans)); memset(temp, '\0', sizeof(temp)); while(scanf("%s", temp) != EOF) { getchar(); if(!strcmp(temp, "0")) break; if(strlen(ans) == 0) strcpy(ans, temp); else { add(); } } printf("%s\n", ans); return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/qq_25425023/article/details/47254745