Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
330582 | 田钰皓 | 【C6-4】高精度减法2 | C++ | 解答错误 | 0 | 2 MS | 272 KB | 1014 | 2025-07-10 14:54:17 |
#include<bits/stdc++.h> using namespace std; int a1[1010],a2[1010],c[1010],l1,l2,l; void sub(){ for(int i=0;i<l;i++){ if(a1[i]<a2[i]){ a1[i+1]--; a1[i]=a1[i]+10; } c[i]=a1[i]-a2[i]; } while(c[l]==0&&l!=0){ l--; } return; } bool check(string s1,string s2){ if(l1>l2) return 0; if(l1<l2) return 1; for(int i=0;i<l;i++){ if(s1[i]<s2[i]) return 1; if(s1[i]>s2[i]) return 0; } return 0; } void sub2(){ for(int i=0;i<l;i++){ c[i]=c[i]+a1[i]+a2[i]; c[i+1]+=c[i]/10; c[i]%=10; } while(c[l]==0&&l!=0){ l--; } for(int i=l;i>=0;i--){ cout<<c[i]; } } int main(){ string s1,s2; cin>>s1>>s2; l1=s1.size(); l2=s2.size(); l=max(l1,l2); if(check(s1,s2)){ cout<<'-'; swap(s1,s2); swap(l1,l2); } for(int i=0;i<l1;i++){ a1[l1-1-i]=s1[i]-'0'; } for(int i=0;i<l2;i++){ a2[l2-1-i]=s2[i]-'0'; } if(s2[0]=='-'){ s2.erase(0,1); sub2(); return 0; } sub(); while(l>=0){ cout<<c[l--]; } return 0; }