6、牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。 牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。 这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。

牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。
牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。
这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。
输入描述:

输入一个正整数N (N <= 50)
接下来一行输入N个正整数,每个数均小于等于1e9.

输出描述:

假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO"

输入例子:

2
1 2

输出例子:

YES

思路:数组中的每一个数字都除以2,一直除到他是一个奇数,比较数组中的每个奇数,都相等则输出yes
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int main()
 4 {
 5     int n;
 6     scanf("%d",&n);
 7     int a[n] ;
 8     for (int i = 0; i < n; ++i) {
 9         scanf("%d",& a[i]);
10     }
11     for (int i = 0; i < n; ++i) {
12         while (a[i] % 2 == 0) 
13             a[i] /= 2;
14     }
15     for (int i = 0; i < n; ++i) {
16         if (a[i] != a[0]) {
17             printf("NO");
18             return 0;
19         }
20     }
21     printf("YES");
22     return 0;
23 }

 

 

posted on 2017-06-11 10:50  olive_gyr  阅读(1014)  评论(0编辑  收藏  举报