求助,最后一个点WA掉了(
查看原帖
求助,最后一个点WA掉了(
264548
Tangent233楼主2020/7/18 21:59
#include<bits/stdc++.h>
using namespace std;
string order1;
long long l=0,repeatc=0;
int repeat(long long k,long long i,long long m,int p)
{
	long long s=0;
	for(i;i<=m;i++)
	{
		int count=0;
		if(order1[i]=='F')
		{
			i+=3;
			while(order1[i]>='0'&&order1[i]<='9')
			{
				count=count*10+(order1[i]-48);
				i++;
			}
		}
		else if(order1[i]=='B')
		{
			i+=3;
			while(order1[i]>='0'&&order1[i]<='9')
			{
				count=count*10-(order1[i]-48);
				i++;
			}
		}
		else if(order1[i]=='R')
		{
			int k=0;
			i+=7;
			while(order1[i]>='0'&&order1[i]<='9')
			{
				k=k*10+(order1[i]-48);
				i++;
			}
			i=repeat(k,i,m,p+1);
		}
		s+=count;
		if(p!=0)
		{
			repeatc=s*k;
		}
		if(order1[i]==']') break;
	}
	if(p==0) l+=(repeatc+s)*k;
	return i;
}
int main()
{
	//freopen("1.in","r",stdin);
	//freopen("1.out","w",stdout);
	getline(cin,order1);
	int m=order1.length();
	for(int i=0;i<=m;i++)
	{
		int count=0;
		if(order1[i]=='F')
		{
			i+=3;
			while(order1[i]>='0'&&order1[i]<='9')
			{
				count=count*10+(order1[i]-48);
				i++;
			}
		}
		else if(order1[i]=='B')
		{
			i+=3;
			while(order1[i]>='0'&&order1[i]<='9')
			{
				count=count*10-(order1[i]-48);
				i++;
			}
		}
		else if(order1[i]=='R')
		{
			int k=0;
			i+=7;
			while(order1[i]>='0'&&order1[i]<='9')
			{
				k=k*10+(order1[i]-48);
				i++;
			}
			i=repeat(k,i,m,0);
		}
		l+=count;
	}
	if(l<0) l*=-1;
	cout<<l;
	return 0;
}

//FD 100 REPEAT 5[FD 100 BK 50] BK 100
//          11111111112222222222333333
//012345678901234567890123456789012345
/*
REPEAT 5[FD 50 REPEAT 10[FD 100]]
*/
2020/7/18 21:59
加载中...