首页 > 代码库 > SDUT OJ 2616 简单计算
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 最少的数,如果有多个数符合条件,输出最小的那个。具体输出格式见样例输出。
示例输入
25 3 2 4 5 643 4 2 5
示例输出
Case 1: 2Case 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;}
SDUT OJ 2616 简单计算
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。