我急眼了(确信)
查看原帖
我急眼了(确信)
764354
funny1145141919810楼主2024/8/8 15:47

求助 此代码一分不得 但样例全过

#include<iostream>
#include<stack>
using namespace std;
string a;
long long b[100001],cnt=0;
int search(int x,int y){
	long long ans=0,x2=x,cnt2=1;
	if(y==0){
		while(a[x]!='+'&&a[x]!='*'&&x!=0){
//			cout<<"xl="<<x<<endl;
			x--;
		}
		for(int i=x2;i>=x+1;i--){
				ans+=(a[i]-'0')*cnt2;
				a[i]='0';
				cnt2*=10;
//				cout<<"ansleft="<<ans<<endl;
			}
	}else{
		while(a[x]!='+'&&a[x]!='*'&&x!=a.length()){
//			cout<<"xr="<<x<<endl;
			x++;
		}	
		for(int i=x2;i<x;i++){
				ans*=cnt2; 
				ans+=(a[i]-'0');
				a[i]='0';
				cnt2*=10;
//				cout<<"ansright"<<ans<<endl;
			}
	}
	return ans;
}
int main(){
	cin>>a;
	int i=0;
	while(i!=a.length()){
		if(a[i]=='*'){
			b[cnt]=search(i-1,0)*search(i+1,1)%10000;
//			cout<<"b[cnt]="<<b[cnt]<<endl;
			cnt++;
		}
		i++;
	}
	
	int fans=0;
	for(int i=0;i<cnt+1;i++){
		fans+=b[i]%10000;
	}
	for(int i=0;i<a.length();i++){
		if(a[i]!='+'&&a[i]!='*') fans+=a[i]-'0';
	}
	cout<<fans%10000;
	return 0;
}

2024/8/8 15:47
加载中...