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; }