Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
106674 | 梁颢城 | 高精度减法 | C++ | 通过 | 100 | 0 MS | 268 KB | 1106 | 2023-10-14 08:47:07 |
#include <bits/stdc++.h> using namespace std; const int maxn = 10010; int len1, len2; int a[maxn], b[maxn]; string s1, s2; void swap(string &a, string &b){ string t; t = a; a = b; b = t; } bool compare(string a, string b){ if (a.size() < b.size()) return true; if (a.size() > b.size()) return false; for (int i = 0; i < a.size(); ++i){ if (a[i] > b[i]) return false; if (b[i] > a[i]) return true; } return false; } int main(){ cin >> s1; cin >> s2; if (compare(s1, s2)){ swap(s1, s2); putchar('-'); } len1 = s1.size(); len2 = s2.size(); for (int i = 0; i < len1; ++i) a[len1 - i] = s1[i] - '0'; for (int i = 0; i < len2; ++i) b[len2 - i] = s2[i] - '0'; for (int i = 1; i <= len1; ++i){ a[i] -= b[i]; if (a[i] < 0){ a[i + 1]--; a[i] += 10; } } while (a[len1] == 0 && len1 > 1) len1--; for (int i = len1; i >= 1; --i) printf("%d", a[i]); return 0; }