9 Divide and Equalize

image
image
image

大致就是选择任意的i,j

提出a[i]的一个因子,给a[j]

所以题目的本质就是因子间的相互转化,问你进行任意次的操作后能使a中的所有元素相等吗

#include<bits/stdc++.h>
#define int long long
using namespace std;
void solve(){
	int n;
	cin>>n;
	map<int,int>mp;
	for(int i=1;i<=n;i++){
		int x;
		cin>>x;
		for(int j=2;j<=sqrt(x);j++){
			while(!(x%j)){
				mp[j]++;
				x/=j;
			}
		}
		if(x!=1){
			mp[x]++;
		}
	}
	for(auto c:mp){
		if(c.second%n){
			cout<<"NO\n";
			return;
		}
	}
	cout<<"YES\n";
}
signed main(){
	ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
	int t=1;
	cin>>t;
	for(int i=1;i<=t;i++)solve();
	return 0;
} 
posted @ 2024-01-09 21:04  yufan1102  阅读(9)  评论(0编辑  收藏  举报