Untitled
ducsieumanh1hitlanamguku
plain_text
17 days ago
2.5 kB
6
Indexable
Never
#include <bits/stdc++.h> using namespace std; int n; string tto_string(int a) { string xt=""; while (a>0) { xt+=(a%10)+'0'; a/=10; } return xt; } string csl(string a, string b) { int du=0; int mid=0; string res=""; a.insert(0,max(0,(int)(b.length()-a.length())),'0'); b.insert(0,max(0,(int)(a.length()-b.length())),'0'); for (int i=a.length()-1;i>=0;--i) { mid=((int)a[i]-'0')+((int)b[i]-'0')+du; du=mid/10; res=(char)(mid%10+'0')+res; } if (du>0) res="1"+res; while (res[0]=='0') res.erase(0,1); return res; } string tsl(string a,string b) { int du=0; int mid=0; string res=""; a.insert(0,max(0,(int)(b.length()-a.length())),'0'); b.insert(0,max(0,(int)(a.length()-b.length())),'0'); for (int i=a.length()-1;i>=0;--i) { mid=((int)a[i]-38)-((int)b[i]-'0')-du; du=(mid<10)?1:0; res=(char)(mid%10+'0')+res; } while (res[0]=='0'&&res.length()>1) res.erase(0,1); return res; } string nsb(string a,int b,int l) { string res=""; int mid=0; int du=0; for (int i=a.length()-1;i>=0;--i) { mid =((int)a[i]-'0')*b+du; du=mid/10; res=(char)(mid%10+'0')+res; } if (du>0) { string k=tto_string(du); res=k+res; } res.insert(res.length(),l,'0'); return res; } string nsl(string a,string b) { string res=""; for (int i=b.length()-1;i>=0;--i) { string t=nsb(a,(int)b[i]-'0',b.length()-i-1); res=csl(res,t); } return res; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; while(n){ n--; string s,a,b; cin>>s; int cur; for (int i=0;i<=s.size();i++) if (s[i]=='+'||s[i]=='-'||s[i]=='*') { cur=i; break; } if (s[cur]=='+') { a=s.substr(0,cur); b=s.substr(cur+1); cout<<csl(a,b)<<endl; } else if(s[cur]=='-'){ a=s.substr(0,cur); b=s.substr(cur+1); if(a.size()>b.size()) { cout<<tsl(a,b)<<endl; } else if (a.size()==b.size()&&a>=b) { cout<<tsl(a,b)<<endl; } else cout<<"-"<<tsl(b,a)<<endl; } else { a=s.substr(0,cur); b=s.substr(cur+1); cout<<nsl(a,b)<<endl; } } }
Leave a Comment