10分,求助!
查看原帖
10分,求助!
662503
guaiguaitu楼主2023/7/8 10:00
#include<bits/stdc++.h>
using namespace std;
char a[1000000];
int ans=0,maip=0;
int main(){
	stack <int> b;
	cin>>a;
	for(int i=0;a[i]!='\0';i++){
		if(a[i]>='0'&&a[i]<='9'&&(a[i-1]<'0'||a[i-1]>'9')) ans=a[i]-'0';
		else if(a[i]>='0'&&a[i]<='9') ans=(ans*10+a[i]-'0')%10000;
		else if(a[i]<'0'||a[i]>'9'){
			b.push(ans);
			if(a[i]=='*'){
				while(a[i]=='*'){
					i++,ans=0;
					while(a[i]>='0'&&a[i]<='9'&&a[i]!='\0'){
						if(a[i]>='0'&&a[i]<='9'&&(a[i-1]<'0'||a[i-1]>'9')) ans=a[i]-'0';
		  				else if(a[i]>='0'&&a[i]<='9') ans=(ans*10+a[i]-'0')%10000;
		  				i++;
					}
					int k=b.top()*ans;
					b.pop();
					b.push(k);
				}
				i--;
			}
			ans=0;
		}
	}
	b.push(ans);
	while(!b.empty()){
		maip+=b.top();
		b.pop();
		maip%=10000;
	}
	cout<<maip;
	return 0;
}
2023/7/8 10:00
加载中...