CodeForces - 573A Bear and Poker

这道题确实是自己太蠢

每个数通过双倍或者三倍 能否达到同一个数

当时一直想用LCM/a[i]后来除以2 除以3看最后是否为1 

然后一直WA On test49

当然知道是数据爆了 然后就卡住了

想想如果这n个数能够乘2 乘3 得到同一个数说明 这些数的约数 只在2 和 3的数量上不同 其他约数都应该是相同的

那么 就按除法 每个数 除以2 除以3 看剩下的约数是否相同 即可

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string>
 4 #include <string.h>
 5 #include <map>
 6 #include <fstream>
 7 #include <set>
 8 #define READ() freopen("in.txt", "r", stdin);
 9 using namespace std;
10 
11 
12 long long gcd(long long a, long long b)
13 {
14     if (b == 0) return a;
15     else return gcd(b, a%b);
16 }
17 
18 long long a[100007];
19 int main()
20 {
21     READ()
22     int n;
23     set<int> s;
24     long long LCM, old_LCM, time;
25     scanf("%d", &n);
26     for (int i = 0; i < n; i++)
27     {
28         scanf("%lld", &a[i]);
29     }//求得最小公倍数
30     for (int i = 0; i < n; i++) //判断是否成功
31     {
32         while (!(a[i] % 2)) a[i] /= 2;
33         while (!(a[i] % 3)) a[i] /= 3;
34         s.insert(a[i]);
35     }
36     if (s.size() == 1 ) printf("Yes\n");
37     else printf("No\n");
38     return 0;
39 }

 

posted @ 2017-02-23 20:34  Lorazepam  阅读(246)  评论(0编辑  收藏  举报