求助!!!诡异
查看原帖
求助!!!诡异
1129659
Kevin626楼主2024/7/9 21:53

为何,若分而答之,两样例皆可过也,可若合而为一,成 2 10 1 3 4 5 则无以得AC。

#include<iostream>
using namespace std;

int t,p,x,y;
string a[10000];
bool k[20001];
string f(int x,int y,int xy) {
	if(x==0)return "1";
	if(y==0)return "2";
	if(k[x+y])return "error";
	k[x+y]=1;
	if(xy==1) {
		if(a[(x+y)%p]!="")return a[(x+y)%p];
		else {
			a[(x+y)%p]=f((x+y)%p,y,0);
			return a[(x+y)%p];
		}
	}
	if(xy==0) {
		if(a[(x+y)%p]!="")return a[(x+y)%p];
		else {
			a[(x+y)%p]=f(x,(x+y)%p,1);
			return a[(x+y)%p];
		}
	}
}

int main() {
	cin>>t>>p;
	for(int i=1;i<=t;i++) {
		cin>>x>>y;
		for(int i=1;i<=20000;i++)k[i]=0;
		cout<<f(x,y,1)<<endl;
	}
	return 0;
}
2024/7/9 21:53
加载中...