Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
105366 | 毛泓博(做题专用,大号Fess) | 高精度减法 | C++ | 解答错误 | 43 | 0 MS | 272 KB | 800 | 2023-10-06 11:02:39 |
#include<bits/stdc++.h> using namespace std; string a1,b1; int a[5005],b[5005],s[5005],lena,lenb,lens,flag=0; int main() { cin>>a1>>b1; lena=a1.length(); lenb=b1.length(); lens=max(lena,lenb); for(int i=1;i<=lena;i++) a[i]=a1[lena-i]-48; for(int i=1;i<=lenb;i++) b[i]=b1[lenb-i]-48; for(int i=lens;i>=1;i--) { if(a[i]<b[i]) { flag=1; break; } } for(int i=1;i<=lens;i++) { switch(flag) { case 0: { if(a[i]<b[i]) { a[i+1]--; a[i]+=10; } s[i]=a[i]-b[i]; break; } case 1: { if(b[i]<a[i]) { b[i+1]--; b[i]+=10; } s[i]=b[i]-a[i]; break; } } } while(!s[lens]&&lens>1) lens--; cout<<(flag?"-":""); for(int i=lens;i>=1;i--) cout<<s[i]; return 0; }