zoukankan      html  css  js  c++  java
  • Coderforce-574C Bear and Poker(素数唯一分解定理)

    题目大意:给出n个数,问能不能通过让所有的数都乘以2的任意幂或乘以3的任意幂,使这n个数全都相等。

    题目分析:最终n个数都是相等的,假设那个数为x,根据素数唯一分解定理,x能分解成m*2p3q。所以,只需将所有的a[i]一直除以2并且一直除以3,最终只需判断这n个数是否全部相等即可。

    代码如下:

    # include<iostream>
    # include<cstdio>
    # include<cmath>
    # include<string>
    # include<vector>
    # include<list>
    # include<set>
    # include<map>
    # include<queue>
    # include<cstring>
    # include<algorithm>
    using namespace std;
    
    # define LL long long
    # define REP(i,s,n) for(int i=s;i<n;++i)
    # define CL(a,b) memset(a,b,sizeof(a))
    # define CLL(a,b,n) fill(a,a+n,b)
    
    const double inf=1e30;
    const int INF=1<<30;
    const int N=100005;
    
    int n;
    LL a[N];
    
    void f(LL &k)
    {
        while(k%2==0) k/=2;
        while(k%3==0) k/=3;
    }
    
    bool judge()
    {
        REP(i,1,n) if(a[i]!=a[0]) return false;
        return true;
    }
    
    int main()
    {
        while(~scanf("%d",&n))
        {
            REP(i,0,n){
                scanf("%lld",a+i);
                f(a[i]);
            }
            if(judge()) printf("Yes
    ");
            else printf("No
    ");
        }
        return 0;
    }
    

      

  • 相关阅读:
    [HAOI2008]硬币购物
    [SCOI2005]骑士精神
    [ZJOI2007]最大半联通子图
    [HAOI2007]反素数
    [SCOI2005]繁忙的都市
    小凯的疑惑
    5月16日vj题解
    周六题目前四题详解
    Codeforces Round #629 (Div. 3)做题记录
    Codeforces Round #570 (Div. 3) B. Equalize Prices
  • 原文地址:https://www.cnblogs.com/20143605--pcx/p/5090189.html
Copyright © 2011-2022 走看看