问题描述
求两个不超过200 位的非负整数的和。
输入数据
有两行,每行是一个不超过200 位的非负整数,没有多余的前导0。
输出要求
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能
输出为0342。
输入样例
22222222222222222222
33333333333333333333
输出样例
Output Sample:
55555555555555555555
#include <stdio.h> #include <string.h> int main(){ char cNum1[201]; char cNum2[202]; int iNum1[201]; int iNum2[201]; scanf("%s", cNum1); scanf("%s", cNum2); memset(iNum1, 0, sizeof(iNum1)); memset(iNum2, 0, sizeof(iNum2)); int i, j = 0; for(i = strlen(cNum1) - 1; i >= 0; i--){ iNum1[j] = cNum1[i] - '0'; j++; } j = 0; for(i = strlen(cNum2) - 1; i >= 0; i--){ iNum2[j] = cNum2[i] - '0'; j++; } int k = strlen(cNum1); if(strlen(cNum2) > strlen(cNum1)) k = strlen(cNum2); for(i = 0; i < k; i ++){ if(iNum1[i] + iNum2[i] > 9){ iNum1[i] = iNum1[i] + iNum2[i] - 10; iNum1[i + 1] += 1; } else iNum1[i] = iNum1[i] + iNum2[i]; } for(i = k; i >= 0; i--){ if(iNum1[i] == 0) i--; printf("%d", iNum1[i]); } printf("\n"); return 0; }