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;
    }
}
相关推荐
二川bro5 分钟前
第44节:物理引擎进阶:Bullet.js集成与高级物理模拟
开发语言·javascript·ecmascript
中文Python7 分钟前
小白中文Python-双色球LSTM模型出号程序
开发语言·人工智能·python·lstm·中文python·小白学python
yuuki2332338 分钟前
【数据结构】常见时间复杂度以及空间复杂度
c语言·数据结构·后端·算法
越努力越幸运5089 分钟前
JavaScript进阶篇垃圾回收、闭包、函数提升、剩余参数、展开运算符、对象解构
开发语言·javascript
czhc11400756639 分钟前
C# 1116 流程控制 常量
开发语言·c#
闻缺陷则喜何志丹12 分钟前
【分块 差分数组 逆元】3655区间乘法查询后的异或 II|2454
c++·算法·leetcode·分块·差分数组·逆元
葛小白122 分钟前
C#进阶12:C#全局路径规划算法_Dijkstra
算法·c#·dijkstra算法
前端小L24 分钟前
图论专题(五):图遍历的“终极考验”——深度「克隆图」
数据结构·算法·深度优先·图论·宽度优先
CoovallyAIHub44 分钟前
超越像素的视觉:亚像素边缘检测原理、方法与实战
深度学习·算法·计算机视觉
CoovallyAIHub1 小时前
中科大西工大提出RSKT-Seg:精度速度双提升,开放词汇分割不再难
深度学习·算法·计算机视觉