View Code of Problem 3855

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int Stoi(string s)
{
	int ans = 0;
	for(int i = 0;i < s.size();i ++)
	{
		ans += (s[i] - '0') * pow(10,s.size()-i-1);
	}
	return ans;
}
int main()
{
	int t;
	cin >> t;
	while(t --)
	{
		string s;
		cin >> s;
		if(s[0] == '-') s = '0' + s;
		vector<int> ans;
		vector<char> Addsub;
		for(int i = 0;i < s.size();i ++)
		{
			if(s[i] != '-' && s[i] != '+')
			{
				int j = i;
				while(j < s.size() && s[j] >= '0' && s[j] <= '9')
				{
					j ++;
				}
				string str = s.substr(i,j-i);
				ans.push_back(Stoi(str));
				i = j - 1;
				if(Addsub.size() > 0)
				{
					int x = ans[ans.size()-2];
					int y = ans.back();
					ans.pop_back();
					ans.pop_back();
					if(Addsub.back() == '+')
					{
						ans.push_back(x+y);
					}
					else
					{
						ans.push_back(x-y);
					}
					Addsub.pop_back();					
				}
			}
			else
			{
				Addsub.push_back(s[i]);
			}
		}
		cout << ans.back() << endl;
	}
	return 0;
}

Double click to view unformatted code.


Back to problem 3855