zoukankan      html  css  js  c++  java
  • 数组变换--全国模拟(三)

    [编程题] 数组变换
    时间限制:1秒
    空间限制:32768K
    牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。
    牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。
    这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。
     
    输入描述:
    输入一个正整数N (N <= 50) 接下来一行输入N个正整数,每个数均小于等于1e9.
     
     
    输出描述:
    假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO"
     
    输入例子:
    2 1 2
     
    输出例子:
    YES
     
    解题思路:题目中是将数组中数改为这个数的2倍(可多次),然后让数组中所有数都相等,因此想到将数组排序,然后使得每个数改变后与最大数比较,应都等于最大数才符合条件。
    1)将数组排序
    2)遍历整个数组,若该位每次扩大为其本身的2倍后等于数组中最大数,则符合条件count++
    3)比较count与数组中数目是否相同,相同返回真,否则返回假
     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int n;
     8     while(cin>>n)
     9     {
    10         int count=0;
    11         int a[n];
    12         for(int i=0;i<n;i++)
    13         {
    14             cin>>a[i];
    15         }
    16 
    17         sort(a,a+n);
    18         for(int i=0;i<n;i++)
    19         {
    20             int j = a[i];
    21             for(;j<a[n-1];)
    22             {
    23                 j *= 2;
    24             }
    25             if(j == a[n-1])
    26             {
    27                 count++;
    28             }
    29         }
    30         if(count == n)
    31         {
    32             cout<<"YES"<<endl;
    33         }
    34         else
    35         {
    36             cout<<"NO"<<endl;
    37         }
    38     }
    39     return 0;
    40 }
    网上方法:对于每个数一直除2,然后最后check是否相等即可。
     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 int a[55];
     6 int main() {
     7     int n;
     8     cin >> n;
     9     for(int i = 0; i < n; i++) cin >> a[i];
    10     string res = "YES";
    11     for(int i = 0; i < n; i++) {
    12         while(!(a[i] & 1)) a[i] >>= 1;
    13     }
    14     for(int i = 1; i < n; i++) {
    15         if(a[i] != a[0]) res = "NO";
    16     }
    17     cout << res << endl;
    18 }
  • 相关阅读:
    微信小程序 选择图片 并上传到服务器
    微信小程序 setData
    python--字典排序
    python--csv文件读写
    机器学习实战笔记--AdaBoost(实例代码)
    机器学习实战笔记--朴素贝叶斯(实例代码)
    python继承 super()
    机器学习实战笔记—决策树(代码讲解)
    java的基本认识
    Delphi制作DLL
  • 原文地址:https://www.cnblogs.com/qqky/p/6884715.html
Copyright © 2011-2022 走看看