社区讨论

何意味

AT_arc158_d[ARC158D] Equation参与者 7已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mi3yi94t
此快照首次捕获于
2025/11/18 10:30
3 个月前
此快照最后确认于
2025/11/18 23:50
3 个月前
查看原帖
测了样例没问题,交上去 WA 了。但是样例也是 WA?
本地跑样例检测输出的数符不符合要求,多次运行发现都是符合的。
这是怎么了??
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,p;
int rd(int x,int y){
	int w=(rand()<<15)^rand();
	return w%(y-x+1)+x;
}
void tim(int &x,int y){
	x=(x*y)%p;
}
int qp(int x,int y){
	int ans=1;
	while(y){
		if(y&1) tim(ans,x);
		tim(x,x);
		y>>=1;
	}
	return ans;
}
int inv(int x){
	return qp(x,p-2);
}
int ca(int x,int y,int z,int w){
	return (qp(x,w)+qp(y,w)+qp(z,w))%p;
}
bool ck(vector<int> v){
	sort(v.begin(),v.end());
	for(int i=0;i<(int)v.size();i++){
		int w=v[i];
		if(w==0) return 0;
		if(i>0&&v[i]==v[i-1]) return 0;
	}
	for(int i:v){
		cout<<i<<" ";
	}
	cout<<"\n";
	return 1;
}
void sol(){
	cin>>n>>p;
	while(1){
		int x=rd(1,p-1),y=rd(1,p-1),z=rd(1,p-1);
		int w1=ca(x,y,z,1);
		int w2=ca(x,y,z,n);
		int w3=ca(x,y,z,2*n);
		int w4=ca(x,y,z,3*n);
		int t=w1*w2%p*w3%p*inv(w4)%p;
		int it=inv(t);
		tim(x,it);
		tim(y,it);
		tim(z,it);
		if(ck({x,y,z})){
/*			int g1=ca(x,y,z,1);
			int g2=ca(x,y,z,n);
			int g3=ca(x,y,z,2*n);
			int g4=ca(x,y,z,3*n);
			if(g1*g2%p*g3%p==g4){
				cerr<<"ok\n";
			}*/
			return;
		}
	}
}
signed main(){
	srand(chrono::steady_clock::now().time_since_epoch().count());
	int ct;
	cin>>ct;
	while(ct--){
		sol();
	}
}

回复

8 条回复,欢迎继续交流。

正在加载回复...