社区讨论

10pts求助

P1981[NOIP 2013 普及组] 表达式求值参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m1yfcf7q
此快照首次捕获于
2024/10/07 11:00
去年
此快照最后确认于
2025/11/04 17:45
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long a[100005];

string qu0(string a)
{
	long long n; 
 	if(a.size()>=2&&a[0]=='0')
  	{  	
		n=a.size();
		for(int i=0;i<n;i++){ 	
			if(a[i]!='0') break;
			else{
				a.erase(a.begin());
				i--;
			}
		}
  	}
	return a;		
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	string s;
	getline(cin,s);
	for(int i=0;i<s.size();i++){
		if(s[i]=='*'){
			int ip=i,f1=0,f2=0;
			string s1="",s2="";
			for(int j=ip-1;j>=0;j--){
				if(isdigit(s[j])){
					s1=s[j]+s1;
				}
				else{
					f1=j;
					break;
				}
			}
			for(int j=ip+1;j<s.size();j++){
				if(isdigit(s[j])){
					s2=s2+s[j];
				}
				else{
					f2=j;
					break;
				}
			}
			string s3=to_string(stoll(s1)*stoll(s2));
			s.replace(f1+1,f2-2,s3);
		}
	} 
	//cout<<s<<'\n';
	int sum=0,cnt=1;
	string pop="";
	for(int i=0;i<=s.size();i++){
		if(isdigit(s[i])){
			pop=pop+s[i];
		}
		else{
			//cout<<pop<<" ";
			a[cnt]=stoll(pop);
			cnt++;
			pop="";
		}
	}
	for(int i=1;i<=cnt-1;i++){
		sum+=a[i];
	}
	//cout<<sum;
	string t=to_string(sum);
	if(t.size()<=4){
		cout<<t;
		return 0;
	}
	else{
		string sb="";
		for(int i=t.size();i>=t.size()-4;i--){
			sb=t[i]+sb;
		}
		cout<<qu0(sb);
	}
	return 0;
}

回复

2 条回复,欢迎继续交流。

正在加载回复...