Untitled
ducsieumanh1hitlanamguku
plain_text
a year ago
2.5 kB
14
Indexable
#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;
}
}
}Editor is loading...
Leave a Comment