SDUT OJ 2616 简单计算

简单计算

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

题目描述

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

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

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

输入

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

对于每组测试数据:

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

第二行为n 个正整数A1、A2、… 、An(1 ≤ 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;
}
时间: 2024-12-30 04:07:22

SDUT OJ 2616 简单计算的相关文章

sdut oj 2059 简单 n! (一个大数与一个小数相乘的算法 、一个大数与一个小数的除法算法 【模板】 )

简单n! Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给定一个数n(0 <= n <= 150), 求0到n中所有数的阶乘. 输入 题目有多组数据,处理到文件结尾.输入一个数n. 输出 输出阶乘,形式如:4! = 24.每组数据输出后跟一个空行. 示例输入 1 4 示例输出 0! = 1 1! = 1 0! = 1 1! = 1 2! = 2 3! = 6 4! = 24 提示 代码: #include <stdi

SDUT OJ 1124 飞越原野 (三维BFS练习)

飞跃原野 Time Limit: 5000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 勇敢的法里奥出色的完成了任务之后,正在迅速地向自己的基地撤退.但由于后面有着一大群追兵,所以法里奥要尽快地返回基地,否则就会被敌人逮住. 终于,法里奥来到了最后的一站:泰拉希尔原野,穿过这里就可以回到基地了.然而,敌人依然紧追不舍.不过,泰拉希尔的地理条件对法里奥十分有利,众多的湖泊随处分布.敌人需要绕道而行,但法里奥还是决定找一条能尽快回到基地的路. 假设泰拉希尔原野

SDUT OJ 1704 数字统计问题

SDUT OJ 1704 数字统计问题 博客原文地址:http://blog.csdn.net/xuechelingxiao/article/details/40930259 昨天晚上学弟问了OJ上这个题,群里说不清楚,就写个解题报告吧. 题目大意: 中文题目,就不翻译了-.- 解题思路: 不知道算不算一个典型的数位DP,反正有点那个意思,感觉确实也可以用记忆话搜索,两个差不多的意思. 我找了一下,这个问题好像是算法设计与实验题解上面的一道题,别的OJ上没有,所以就在自己OJ上做了. 大体的思路

Python中的简单计算

Python中的简单计算 (1)基本的加减乘除 >>> 2 + 2 4 >>> 50 - 5*6 20 >>> (50 - 5*6) / 4 5.0 >>> 8 / 5  1.6 (2)除法总是会返回一个浮点数,想要返回整数,需要用"//"来表示(floor division),另外,可以用"%"进行取余操作 >>> 17 / 3  # classic division ret

HDU 1038[Biker&#39;s Trip Odometer]简单计算

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1038 题目大意:给轮子直径,转数,时间.要求输出走过的距离和时速(mile为单位) 关键思想:纯算 代码如下: #include <iostream> using namespace std; #define pi 3.1415927 int main(){ double d,r,t,l; int cnt=1; while(cin>>d>>r>>t&&a

SDUT OJ 3045 迷之图论 (树的直径)

题目地址:SDUT OJ 3045 这题比赛的时候想的差不多..但是总是觉得不对..写了一次就没再写,然后删了..当时没想到的是第二次求出来的就是最长链..当时想到的两次bfs找最大值(这一种方法其实结果也对..TAT..),还有找到点后在回溯减去重点等等..但总觉得好像都不太对...赛后才知道这题原来是树的直径.....牡丹江区域现场赛的时候遇到过,不过赛后也没看... 找树的直径的方法其实就是先任取一点进行bfs,找到最远的一点,这时最远的一点肯定是最长链端点之一,然后再从这一最远点开始bf

SDUT OJ -2892 A

A Time Limit: 60ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 给出n(1<= n && n <= 2*10^6)个字符串,每个字符串只包含小写英文字母,且最多有五个.问这n个字符串中出现次数最多的有多少个. 输入 单组输入.第一行输入一个数字n,接下来n行,每行包含一个字符串. 输出 输出一个数字代表答案. 示例输入 5 aba abb w aba z 示例输出 2 提示 字段树,模板题 #include <iost

SDUT OJ 1221 亲和数 (找出某个数n所有的因子数,只需要暴力:2-&gt;sqrt(n) 即可 )

亲和数 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 如果a的因子和等于b,b的因子和等于a,且a≠b,则称a,b为亲和数对. 比如220的所有真约数(即不是自身的约数)之和为: 1+2+4+5+10+11+20+22+44+55+110=284. 284的所有真约数和为: 1+2+4+71+142=220. 你的任务就编写一个程序,判断给定的两个数是否是亲和数. 输入 输入数据第一行包含一个数M,接下有M行,每行一个实例,

Date()日期简单计算

/** * 判断是否为闰年 * @param year * @return */ public boolean isLeap ( int year ) { if ( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ) return true; else return false; } /** * 判断某年某月总天数 * @param year * @param month * @return */ public int get