20分求助 WA 测试点1,4过了
查看原帖
20分求助 WA 测试点1,4过了
747804
BEAUT楼主2022/8/5 10:49

思路:先乘后加,将字符导入数组

#include<iostream>
#include<cstring>
using namespace std;
char a[3000000];
long long p[3000000];
long long ans=0,j=1;
int main()
{
	cin>>a; 
	int s=strlen(a);
	for(int i=0;i<s;i++)
	{
		if(a[i]>='0'&&a[i]<='9')
		{
			p[j]+=a[i]-'0';
			p[j]*=10;
		}
		else
		{
			p[j]/=10;
			j++;
			if(a[i]=='*')
			{
				p[j]=0-1;
				j++;
			}
			if(a[i]=='+')
			{
				p[j]=0-2;
				j++;
			}
		}
	}
	p[j]/=10;//当最后一个数加完后 不会执行第十八行else了 
	for(int i=1;i<=j;i++)
	{
		if(p[i]==-1)
		{
			p[i+1]*=p[i-1];
			p[i-1]=-3;
		}
	}
	for(int i=1;i<=j;i++)
	{
		if(p[i]>=0)
		{
			ans+=p[i];
		}
	}
	cout<<ans%10000;
	return 0; }
2022/8/5 10:49
加载中...