牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。 牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。 这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。 输入描述:输入一个正整数N (N <= 50) 接下来一行输入N个正整数,每个数均小于等于1e9. 输出描述:假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO" 输入例子:2 1 2 输出例子:YES
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
int N;
int temp;
string res="YES";
vector<int> array;
while(cin>>N){
for(int i=0;i<N;i++){
cin>>temp;
array.push_back(temp);
}
sort(array.begin(),array.end());
int max=array.back();
for(int j=0;j<N;j++){
if(max%array[j]==0){
continue;
}else{
res="NO";
}
}
cout<<res<<endl;
}
return 0;
}
#include<iostream>
#include<cstring>
using namespace std;
int main(){
int n;
int a[51];
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
while(a[i] % 2 == 0) a[i] /= 2;
}
for(int i = 1; i < n; i++){
if(a[i] != a[i-1]){
cout << "NO" << endl;
return 0;
}
}
cout << "YES" << endl;
return 0;
}
|
|
来自: 雪柳花明 > 《C 笔试 算法题准备》