ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 L: 大整数减法
http://acm.ocrosoft.com/problem.php?cid=1316&pid=11
题目描述
求两个大的正整数相减的差。
输入
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
输出
一行,即所求的差。
样例输入
9999999999999999999999999999999999999
9999999999999
样例输出
9999999999999999999999990000000000000
代码:
#include<stdio.h> #include<string.h> int main() { int k = 0; int a1[255], a2[255], a3[255]; char c1[255], c2[255]; memset(a1, 0, sizeof(a1)); memset(a2, 0, sizeof(a2)); scanf("%s",c1); scanf("%s",c2); int str1=strlen(c1); int str2=strlen(c2); int cnt = 0; for(int i = str1 - 1; i >= 0; i --) a1[cnt ++] = c1[i] - '0'; cnt = 0; for(int i = str2 - 1; i >= 0; i --) a2[cnt ++] = c2[i] - '0'; for(int i = 0; i < 255; i ++) { a1[i] -= a2[i]; if(a1[i] < 0) { a1[i] += 10; a1[i + 1] --; } } cnt = 0; for(int i = 254; i >= 0; i --) a3[cnt ++] = a1[i]; for(int i = 0; i < 255; i ++) { if(a3[i] != 0) k = 1; if(k == 1) printf("%d", a3[i]); } if(k == 0) printf("0"); printf("\n"); return 0; }