Untitled

 avatar
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