分享

04 数组变换 2017年校招模拟笔试(第三场)

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

输入描述:
输入一个正整数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;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多