这题“哈希”过不了吗
查看原帖
这题“哈希”过不了吗
602632
_7Mr楼主2023/7/23 00:10
#include<bits/stdc++.h>
#define int long long
#define INF INT_MAX
using namespace std;
const int maxn=5e5+5,mod1=INF,mod2=9223372036854775783,mod3=1145141919789;
int t,n;
int a[maxn];
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	cin>>t;
	while(t--){
		cin>>n;
		memset(a,0,sizeof(a));
		int sum1=1,sum2=1,sum3=1,p,q1,q2,q3;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			sum1*=a[i];
			sum2*=a[i];
			sum3*=a[i];
			sum1%=mod1;
			sum2%=mod2;
			sum3%=mod3;
			if(i==1) p=a[i];
			else p=__gcd(p,a[i]);
			if(i==1) q1=a[i];
			else q1=(q1*a[i]/__gcd(q1,a[i]));
			if(i==1) q2=a[i];
			else q2=(q2*a[i]/__gcd(q2,a[i]));
			if(i==1) q3=a[i];
			else q3=(q3*a[i]/__gcd(q3,a[i]));
			q1%=mod1;
			q2%=mod2;
			q3%=mod3;
		}
		if(n==2) cout<<"Yes\n";
		else{
			if(q1*p==sum1 && q2*p==sum2 && q3*p==sum3) cout<<"Yes\n";
			else cout<<"No\n";
		}
	}
	return 0;
}

想到了两两互质,但是没有想到怎么做,敲了个暴力,但是有点像哈希,但只有 3636 pts 有没有大佬这题用 “哈希”过了的,求指点

2023/7/23 00:10
加载中...