D. Divide and Equalize--Codeforces Round 903 (Div. 3)

D. Divide and Equalize

题意:让一组数中的一个数除以一个因子,一个数除以一个因子,假如经过若干次操作后能够使数组所有数相等,那么输出YES,否则输出NO。

分析:乘除因子,那么实际上就是因子的转移,一个数乘上这个因子,另一个数除以这个因子,总的因子数不变。

要让所有数相等,那么就要让所有因子能够整除n,这样能够使所有因子能够平均分配给每一个数。

使用map记录所有因子个数,遍历map验证整除即可。

cpp 复制代码
#include<iostream>
#include<map>
using namespace std;
int main()
{
    int T;cin>>T;
    while(T--){
        int n;
        cin>>n;
        map<int,int>q;
        for(int i=1;i<=n;i++)
        {
            int t;cin>>t;
            for(int j=2;j<=t/j;j++)
            {
                while(t%j==0){
                    q[j]++;
                    t/=j;
                }
            }
            q[t]++;
        }
        int f=0;
        for(auto x:q){
            if(x.first<=1) continue;
            if(x.second%n!=0) {f=1;break;}
        }
        if(f==1) cout<<"NO"<<endl;
        else cout<<"YES"<<endl;
    }
}
相关推荐
sulikey13 小时前
C/C++内存管理深度解析:从内存分布到new/delete底层原理
c语言·c++·内存管理·placement-new
Zfox_13 小时前
【Go】 协程和 channel
开发语言·后端·golang
AI科技星13 小时前
加速正电荷产生的电场、引力场与磁场变化率方向关系的数学求导验证——基于张祥前统一场论核心方程
数据结构·人工智能·经验分享·算法·机器学习·计算机视觉
bin915313 小时前
当AI化身Git管家:初级C++开发者的版本控制焦虑与创意逆袭——老码农的幽默生存指南
c++·人工智能·git·工具·ai工具
向上_5035829113 小时前
Android之kotlin学习
开发语言·学习·kotlin
木易 士心13 小时前
Kotlin vs Swift:现代移动开发的“双子星”全面对比
开发语言·kotlin·swift
I_ltt_Itw,13 小时前
Python协程学习笔记
开发语言·网络·python
大雨淅淅14 小时前
【编程语言】Kotlin:从新手到大神的进阶之路
android·开发语言·kotlin
自由生长202414 小时前
C++折叠表达式完全指南:从打印函数到空包处理的深入解析
c++·后端
j***121514 小时前
计算机体系结构期末复习3:GPU架构及控制流问题
java·开发语言·架构