10pts求助
查看原帖
10pts求助
372336
一个句号楼主2023/9/24 12:17
#include<iostream>
#include<string>
#include<cstring>
using namespace std;
#define ll long long
//每次运算都可以%1000
//后位运算 不影响前位 
//大体思路?
//*比+优先,弹栈思想?
//后面是+,入栈
//后面是*,合并
string s;
ll cnt,ans;
ll num[100005];//需要求和的数字组合 
int main(){
	cin>>s;
	ll n=s.length();
	ll t=0,last=1; 
	for(int i=0;i<n;i++){
		if(s[i]>='0'&&s[i]<='9'){
			t*=10;t+=s[i]-'0';
			t%=10000; 
		}//记录当前数字 
		if(s[i]=='+'){
			t*=last;//合并
			t%=10000;
			num[++cnt]=t;//入栈 
			t=0;last=1;//重置 
		}
		if(s[i]=='*'){
			last*=t;//记录合并量 
			last%=10000;
			t=0;//重置 
		}
	}
	num[++cnt]=t*last;
	for(int i=1;i<=cnt;i++){
		ans+=num[i];
		ans%=10000;
	}
	cout<<ans%10000;
	return 0;
} 
2023/9/24 12:17
加载中...