Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
105465 | 陈志轩 | 高精度减法 | C++ | 通过 | 100 | 0 MS | 264 KB | 1027 | 2023-10-06 18:06:42 |
#include<iostream> #include<string> #include<cmath> using namespace std; int a[10087],b[10087]; string max_(string x,string y){ if (x.size() == y.size()){ if (x >= y){ return x; } return y; } else{ if (x.size() > y.size()){ return x; } return y; } } int main(){ string x,y; cin>>x>>y; bool f = false; if (max_(x,y) == y){ swap(x,y); f = true; } int xs = x.size(); int ys = y.size(); for (int i = xs - 1;i >= 0;i--){ a[i] = x[xs - i - 1] - 48; } for (int i = ys - 1;i >= 0;i--){ b[i] = y[ys - i - 1] - 48; } int maxl = max(xs,ys); int o = 0; for (int i = 0;i < maxl;i++){ a[i] -= b[i]; if (a[i] < 0){ a[i + 1]--; a[i] += 10; } } maxl += 2; while (a[maxl] == 0 && maxl >= 0){ maxl--; } if (maxl == -1){ cout<<0<<endl; return 0; } if (f){ cout<<"-"; } for (int i = maxl;i >= 0;i--){ cout<<a[i]; } return 0; }