CF div2 318 C

C. Bear and Poker

Limak is an old brown bear. He often plays poker with his friends. Today they went to a casino. There are n players (including Limak himself) and right now all of them have bids on the table. i-th of them has bid with size ai dollars.

Each player can double his bid any number of times and triple his bid any number of times. The casino has a great jackpot for making all bids equal. Is it possible that Limak and his friends will win a jackpot?

Input

First line of input contains an integer n (2 ≤ n ≤ 105), the number of players.

The second line contains n integer numbers a1, a2, ..., an (1 ≤ ai ≤ 109) — the bids of players.

Output

Print "Yes" (without the quotes) if players can make their bids become equal, or "No" otherwise.

Sample test(s)

Input

475 150 75 50

Output

Yes

Input

3100 150 250

Output

No

Note

In the first sample test first and third players should double their bids twice, second player should double his bid once and fourth player should both double and triple his bid.

It can be shown that in the second sample test there is no way to make all bids equal.

题目大意是有N个人每个人有ai元,对于每个ai可以翻2倍或者翻3倍多次,问最后是否可以让这N个数相等。

一开始想直接用BFS搞的,但是发现ai太大的时候根本搞不了。于是换一种想法将乘法换成除法,对于每个数ai,如果ai%2==0那么就ai/=2直到ai%2!=0为止,如果ai%3==0那么ai/=3直到ai%3!=0为止,最后只需要检查一下所有的元素是否相等就可以得到答案了。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <queue>
#include <vector>
#include <stack>

using namespace std;

const int M = 10005;
const int maxn = 5000000;
typedef long long ll;

vector<int>G[maxn];
queue<int>Q;
stack<int>st;

int a[maxn];

int main()
{

    int n;
    int ans = 0;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        while(a[i]%2==0) a[i] /= 2;
        while(a[i]%3==0) a[i] /= 3;
    }
    for(int i=2;i<=n;i++){
        if(a[i] != a[1]){

            ans = 1;
            break;
        }
    }
        if(ans)            printf("No\n");
        else printf("Yes\n");

    return 0;
}

时间: 2024-12-14 04:29:04

CF div2 318 C的相关文章

CF div2 318 D

D. Bear and Blocks Limak is a little bear who loves to play. Today he is playing by destroying block towers. He built n towers in a row. The i-th tower is made of hi identical blocks. For clarification see picture for the first sample. Limak will rep

CF div2 318 B

B. Bear and Three Musketeers Do you know a story about the three musketeers? Anyway, you will learn about its origins now. Richelimakieu is a cardinal in the city of Bearis. He is tired of dealing with crime by himself. He needs three brave warriors

CF div2 318 A

A. Bear and Elections Limak is a grizzly bear who desires power and adoration. He wants to win in upcoming elections and rule over the Bearland. There are n candidates, including Limak. We know how many citizens are going to vote for each candidate.

Codeforces Round #318 [RussianCodeCup Thanks-Round] (Div. 2)

以后每做完一场CF,解题报告都写在一起吧 暴力||二分 A - Bear and Elections 题意:有n个候选人,第一个候选人可以贿赂其他人拿到他们的票,问最少要贿赂多少张票第一个人才能赢 分析:正解竟然是暴力!没敢写暴力,卡了很久,导致这场比赛差点爆零!二分的话可以优化,但对于这题来说好像不需要... 收获:以后CF div2的A题果断暴力 代码(暴力): /************************************************ * Author :Runni

CF1287 div2题解

前言 昨夜打CF div2,思涨分之事.然脑未上线,BC题皆挂,仅A两道. 特写此篇,以记此耻. 所有题题面:https://codeforces.com/contest/1287/problems A. Angry Students 题面:https://codeforces.com/contest/1287/problem/A 题解:直接扫一遍,记录\(A\)后面最长的一段\(P\)即可. 时间复杂度:\(O(n)\). 代码:略 B. Hyperset 题面:https://codefor

HDU-SupportOrNot训练实录

菜鸡队训练实录. 现场赛记录: 2016:[名称:奖项/排名] ZJPSC:Gold/1 CCPC中南邀请赛:Gold/1 ICPC Dalian:Gold/24 ICPC Beijing:??? CCPC Final:??? ICPC China-Final:??? To do List: 所有人需要提高效率 减小罚时 三人组队训练时必须用指定Ubuntu电脑敲题,其他两台电脑只能读题.读代码 为提升代码能力,poursoul和_ilovelife尽量做到每天solo一套简单GYM,也可以视情

我的ACM 之大一

当我开始写文章时,已经快12点了,为什么不睡觉?因为还有半小时有CF div2 . 趁着现在有空,有感而发,回顾我的ACM之大一.我第一次接触ACM是在叶老师的宣讲会上,那时就被忽悠了,我单纯地认为参加了ACM才能追上国内高校顶尖学子,不进ACM大学平平淡淡,我就平平庸庸了.于是,那天开始我就开始刷oj水题200道,想赶快加入ACM,结果我是第一个刷到200题的,然而这并没有什么卵用!校赛被虐,杭电比赛也一题惨淡收场,感觉还有很多人比我厉害,我还是个平庸的人:( 后来我参加寒假集训,学了几个使用

我是逗比!!!!!!

set和map都不怎么会用的逗比就这样完挂了第一次cf div2 D #include <cstdio> #include <cstring> #include <set> #include <iostream> #include <algorithm> #include <cstdlib> using namespace std; set<int> a,b,c; int aa[400001],bb[400001]; in

牛客小白月赛2 总结

随便找了牛客网上的一个比赛打,看了一会题目,很快就嘴巴AK了,突然有点小激动,最后发现牛客小白月赛就是手速场,题目难度在CF DIV2 A~C ,总共10题,一不小心又做了一波水题.(可惜嘴巴选手实际只敲了3题的代码,逃) A 数字方阵 构造题,打表找规律,或者随机,详见http://www.cnblogs.com/Surrender/p/8969880.html B 小马过河 解方程 C 真真假假 用map D 虚虚实实 欧拉路径 E 是是非非 nim游戏 F 黑黑白白 树上博弈,用最大.最小