描述
求两个大的正整数相减的差。
输入
共2行,第1行是被减数a,第2行是减数b(a > b)。每个大整数不超过200位,不会有多余的前导零。
输出
一行,即所求的差。
样例输入
9999999999999999999999999999999999999
9999999999999
样例输出
9999999999999999999999990000000000000
代码
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char a[201], b[201];
int ans[201];
memset(ans, 0, sizeof(ans));
cin >> a >> b;
int ai = 0, bi = 0, ansi = 0, h = 0;
while (a[ai] != '\0') ++ai;
while (b[bi] != '\0') ++bi;
ai--, bi--;
while (bi > -1 && ai > -1) {
if (a[ai] - '0' - h < b[bi] - '0')
ans[ansi] = 10 + a[ai] - '0' - h - (b[bi] - '0'), h ? h = h : h = 1;
else
ans[ansi] = a[ai] - '0' - h - (b[bi] - '0'), h = 0;
ansi++, ai--, bi--;
}
while (ai > -1) {
if (a[ai] - '0' - h < 0)
ans[ansi] = 10 + a[ai] - '0' - h, h ? h = h : h = 1;
else
ans[ansi] = a[ai] - '0' - h, h = 0;
++ansi, --ai;
}
while (ansi > -1 && ans[ansi] == 0) --ansi;
while (ansi > -1) cout << ans[ansi--];
return 0;
}
思路分析
其实这个题的难度是中下,按照常规思路解决即可。