CodeForces - 573A (简单数论+模拟)

题意

https://vjudge.net/problem/CodeForces-573A

n个数ai ,你可以把每个数任意次×2 或×3 ,问能否最终使得每个数相等。

思路

x2和x3只能改变数的因子2和3的个数,所以本质就是把这些2和3因子全部去掉,再看每个数是否相等即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int N=200005;
const int mod=1e9+7;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
ll a[N];
int main()
{
    std::ios::sync_with_stdio(false);
    int n;
    cin>>n;
    int flag=0;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        while(a[i]%2==0) a[i]/=2;
        while(a[i]%3==0) a[i]/=3;
        if(i>1&&a[i]!=a[i-1])
            flag=1;
    }
    if(flag)
        cout<<"No"<<endl;
    else
        cout<<"Yes"<<endl;
    return 0;
}

  

posted @ 2019-11-29 14:25  swineherd_MCQ  阅读(...)  评论(... 编辑 收藏