这段代码为什么会UKE一个点
查看原帖
这段代码为什么会UKE一个点
761968
Ls_Lemilk楼主2023/12/31 20:46

虽然我知道这不是正解,但是我还是想来问一下为什么这段代码会UKE一个点(

#include <bits/stdc++.h>
using namespace std;

int t,p,a,b,c;
int x;
int nx;
bool f[100005],yyyy;

queue<int> q;

void doit(int i){
	if (i==1) nx=(x*a)%p;
	if (i==2) nx=(x+b)%p;
	return;
}

int main(){
	cin>>t;
	while (t--){
		while (!q.empty()) q.pop();
		for (int i=1;i<=100000;++i) f[i]=0;
		q.push(0);
		cin>>p>>a>>b>>c;
		f[0]=1; yyyy=0;
		while (!q.empty()){
			x=q.front();
			q.pop();
			if (x==c) {
				cout<<"Yes"<<endl;
				yyyy=1;
				break;
			}
			for (int i=1;i<=2;++i){
				doit(i);
				if (!f[nx]) q.push(nx),f[nx]=1;
			}
		}
		if (!yyyy) cout<<"No"<<endl;
	}
	return 0;
}
2023/12/31 20:46
加载中...