D. Divide and Equalize
题解
我们只需要将每个数拆成质因数相乘的形式,然后对每个质因数累加,最后观察每个质因数出现的次数是不是数组长度的整数倍即可。
code
#include<bits/stdc++.h> using namespace std; const int N=1e4+5; int a[N]; map<int ,int > map1; bool ss(int m){ for (int i=2;i<=sqrt(m)+1;i++){ if (m%i==0) return false; } return true; } void chai_x(int m){ int i=2; if (ss(m)){ map1[m]++; return; } while (m!=1){ if (m%i==0){ map1[i]++; m/=i; } else i++; } } int main(){ // freopen("input.txt","r",stdin); int t; cin>>t; while (t--){ int n; cin>>n; for (int i=1,x;i<=n;i++){ cin>>x; if (x==1) continue; chai_x(x); } bool bol=true; for (auto it : map1){ if ((it.second)%n!=0){ bol=false; break; } } if (bol) cout<<"YES\n"; else cout<<"NO\n"; map1.clear(); } return 0; }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步