9 Divide and Equalize
大致就是选择任意的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;
}