14 条题解
-
0
using namespace std; string s,p; vector<int>v,t,res; bool ifbigger(vector<int> x,vector<int> y){ if(x.size()<y.size())return 0; if(x.size()>y.size())return 1; for(int i=x.size()-1;i>=0;i--){ if(x[i]>y[i]){ return true; } else if(x[i]<y[i]){ return false; } } return true; } bool vis[10089],vis1[10089]; int main(){ cin>>s>>p; for(int i=0;i<s.size();i++){ if(s[i]!='0')break; if(s[i]=='0'){ vis[i]=1; } } for(int i=0;i<p.size();i++){ if(p[i]!='0')break; if(p[i]=='0'){ vis1[i]=1; } } for(int i=s.size()-1;i>=0;i--){ if(vis[i]==1)continue; v.push_back(s[i]-'0'); } for(int i=p.size()-1;i>=0;i--){ if(vis1[i]==1)continue; t.push_back(p[i]-'0'); } if(s==p){ cout<<0<<endl; return 0; } if(ifbigger(v,t)){ for(int i=0;i<v.size()-t.size();i++){ t.push_back(0); } for(int i=0;i<min(v.size(),t.size());i++){ if(v[i]>=t[i]){ res.push_back(v[i]-t[i]); } else{ v[i+1]--; res.push_back(v[i]+10-t[i]); } } for(int i=t.size();i<v.size();i++){ if(i==v.size()-1 && v[i]==0 && v.size()>1){ break; } res.push_back(v[i]); } for(int i=0;i<res.size();i++){ if(res[i]<0){ res[i]+=10; res[i+1]--; } } res.push_back(0); bool f1=0; for(int i=res.size()-2;i>=0;i--){ if(res[i-1]<0){ res[i-1]+=10; res[i]--; } if(res[i]==0 && f1==0 && res.size()>2){ continue; } cout<<res[i]; f1=1; } } else{ for(int i=0;i<t.size()-v.size();i++){ v.push_back(0); } for(int i=0;i<min(v.size(),t.size());i++){ if(t[i]>=v[i]){ res.push_back(t[i]-v[i]); } else{ t[i+1]--; res.push_back(t[i]+10-v[i]); } } for(int i=v.size();i<t.size();i++){ if(i==t.size()-1 && t[i]==0 && t.size()>1){ break; } res.push_back(t[i]); } for(int i=0;i<res.size();i++){ if(res[i]<0){ res[i]+=10; res[i+1]--; } } cout<<"-"; res.push_back(0); bool f1=0; for(int i=res.size()-2;i>=0;i--){ if(res[i-1]<0){ res[i-1]+=10; res[i]--; } if(res[i]==0 && f1==0 && res.size()>2){ continue; } cout<<res[i]; f1=1; } } }
信息
- ID
- 13833
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 14
- 已通过
- 0
- 上传者