20分求助巨佬
查看原帖
20分求助巨佬
1534463
omega_Xqc楼主2024/11/23 17:05
#include<iostream>
#define ll long long
using namespace std;
const int N = 100000+7;
ll a[N];
char f[N];
int atop,ftop;
int fh(char op)
{
	if (op == '+')  return 1;
	if (op == '*')  return 2;
}
void calc()
{
	atop--;
	if (f[ftop] == '+')  a[atop] += a[atop+1];
	if (f[ftop] == '*')  a[atop] *= a[atop+1];
	ftop--;
}
int main()
{
	string s;
	cin>>s;
	int len = s.length();
	int i = -1;
	while (i < len-1)
	{
		i++;
		if (s[i]>='0'&&s[i]<='9')
		{
			int num = 0;
			while (s[i]>='0'&&s[i]<='9'){
				num = num*10+(s[i]-'0');
				i++;				
			}i--;
			a[++atop] = num;
		}
		else
		{
			while (ftop&&fh(f[ftop])>=fh(s[i]))  calc();
			f[++ftop] = s[i];
		}
	}
	while (ftop)  calc();
	cout<<a[1] % 10000;
	
	return 0;
}

样例全过but除了#1#4都WA

2024/11/23 17:05
加载中...