Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
15204 | huyanfeng | 高精度减法 | C++ | 通过 | 0 MS | 268 KB | 830 | 2023-04-21 12:59:55 |
#include<bits/stdc++.h> using namespace std; string s1, s2; int a[10090], b[10090], c[10090]; int main() { //1.输入 cin >> s1 >> s2; int len1 = s1.size(), len2 = s2.size(); //第1个数比第2个数小 if(len1 < len2 || len1 == len2 && s1 < s2) { cout <<"-"; swap(s1, s2); swap(len1, len2); } //2.转换 for (int i = 0; i < len1; i++) { a[len1 - 1 - i] = s1[i] - '0'; } for (int i = 0; i < len2; i++) { b[len2 - 1 - i] = s2[i] - '0'; } //3.计算 for (int i = 0; i < len1; i++) { if(a[i] < b[i]) { c[i] = a[i] + 10 - b[i]; a[i + 1] = a[i + 1] - 1; }else{ c[i] = a[i] - b[i]; } } //4.去除前导0 while(c[len1 - 1] == 0 && len1 - 1 != 0) { len1--; } //5.输出 for (int i = len1 - 1; i >= 0; i--) { cout << c[i]; } return 0; }