求助
查看原帖
求助
1004121
pengsiqi11楼主2024/10/20 22:56
#include<bits/stdc++.h>
using namespace std;
struct node{
	char opt;
	int x,y;};
string s; 
int l,r,num1,num2=1,a[100025];
queue<node >b;
bool f[100025];
int main(){
	cin>>s;
	for(int i=0;i<s.size();i++){
		if(s[i]=='+'||s[i]=='*'){
			num1++;
			b.push( node{s[i],num1-1,num1});}
		a[num1]=a[num1]*10+(s[i]-'0');}
	for(int i=1;i<=num1;i++) f[i]=1;
	node cnt;
	for(int i=1;i<=num2;i++){ 
		cnt=b.front();
		b.pop();
		if(cnt.opt=='*'){
			l=cnt.x,r=cnt.y;
			while(f[l]) l--;
			while(f[r]) r++; 
			a[l]=((a[l]%10000)*(a[r]%10000))%10000,a[r]=0,f[r]=0;
		}else b.push(cnt);}
	for(int i=1;i<=num2;i++){
		cnt=b.front();
		b.pop();
		l=cnt.x,r=cnt.y;
		while(f[l]) l--;
		while(f[r]) r++;
		a[l]=((a[l]%10000)+(a[r]%10000))%10000,a[r]=0,f[r]=0;}
	int ans=0;
	while(f[ans]) ans++;
	cout<<a[ans]; 
	return 0;}

0pts,自我检查感觉没问题,求大佬指教

2024/10/20 22:56
加载中...