zoukankan      html  css  js  c++  java
  • SDUT OJ 2616 简单计算

    简单计算

    Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

    题目描述

    某天,XX YY 出了一道题,题目是:

    给出n 个十进制的数,找出这n 个数的二进制表示中1 的个数最少的数。

    由于YY 的计算能力很差,所以他想让你帮他写个程序来计算出来。

    输入

     

    输入的第一行为一个正整数T(1 T20),代表测试数据组数。

    对于每组测试数据:

    输入的第一行为一个正整数n (1 n 105)

    第二行为n 个正整数A1A2An1 Ai 109)。

    输出

     

    每组数据输出一行,先输出数据组数,再输出二进制中含1 最少的数,如果有多个数符合条件,输出最小的那个。具体输出格式见样例输出。

    示例输入

    2
    5 
    3 2 4 5 6
    4
    3 4 2 5

    示例输出

    Case 1: 2
    Case 2: 2

    #include <iostream>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    int a[100004];
    
    int BitCount2(unsigned int n) 
    {
        unsigned int c =0 ;
        for (c =0; n; ++c)
        {
            n &= (n -1) ; // 清除最低位的1
        }
        return c ; //返回 该十进制数转换为二进制后中1的个数
    }
    
    int main()
    {
        int t;
        int i,j, k=1;
        int n;
        int dd, min, cc;
    
        cin>>t;
    
        while(t--)
        {
            cin>>n;
    
            cin>>a[0];
            min=BitCount2( a[0] );
            cc=a[0];
    
            for(i=1; i<n; i++)
            {
                cin>>a[i];
                dd=BitCount2(a[i]);
                if(dd<min )
                {
                    min=dd;
                    cc=a[i];
                }
                else if(dd==min)
                {
                    if(a[i]<cc)
                      cc=a[i];
                }
            }
            cout<<"Case "<<k++<<": "<<cc<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    Docker 安装各种环境
    N级树形菜单封装
    一个周期算出所有高电平的个数
    DDR3新版(3):DDR3自动读写控制器
    DDR3_新版(2):IP核再封装
    数电(6):时序逻辑电路
    Vue表单那些事
    liunx环境修改minio默认端口和后台启动
    liunx 后台启动mongodb服务
    liunx安装和部署nacos配置中心
  • 原文地址:https://www.cnblogs.com/yspworld/p/4011627.html
Copyright © 2011-2022 走看看