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