奇怪的错误(悬关)
查看原帖
奇怪的错误(悬关)
616964
Adolfo_North楼主2023/1/31 21:04

hack:

in:REPEAT 5[ FD 50 REPEAT 10[FD 100]] FD 100

out:5350

myout:5750

代码:

#include<bits/stdc++.h>
using namespace std;
int read(){
    int x=0,f=1;
    char ch=getchar();
    while(ch<'0' || ch>'9'){ if(ch=='-') f=-1;ch=getchar();}
    while(ch>='0' && ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
    return x*f;
}
long long f(){
	long long sum=0,x;
	char a;
	while(cin>>a){
		if(a=='F') {
			x=2;
			while(x--) getchar();
			x=read();
			sum+=x;
		}
		else if(a=='B'){
			x=2;
			while(x--) getchar();
			x=read();
			sum-=x;
		}
		else if(a=='R'){
			x=6;
			while(x--) getchar();
			x=read();
			long long kkkkk=f();
//			cout<<"k:"<<kkkkk<<endl;
			sum+=x*kkkkk;
		}
		else if(a==']'){
			return sum;
		}
//		cout<<sum<<endl;
	}
	return sum;
}
int main(){
	cout<<abs(f());
	return 0;
}

把注释的两行取消注释可以发现计算出: FD 50 REPEAT 10[FD 100]没有执行重复5遍而是执行了前进一百,再执行重复5遍,求调

2023/1/31 21:04
加载中...