zoukankan      html  css  js  c++  java
  • CSDN挑战编程——《金色十月线上编程比赛第二题:解密》

    金色十月线上编程比赛第二题:解密

    题目详情:

    小强是一名学生, 同一时候他也是一个黑客。 考试结束后不久。他吃惊的发现自己的高等数学科目竟然挂了,于是他果断入侵了学校教务部站点。

    在入侵的过程中。他发现了与成绩相关的内容是一个加密文件,这个文件由 n 个数构成,经过分析。这个加密文件的密钥为这 n 个数中二进制位数 1 最少的数。

    但因为数比較多,小强 希望你能帮他得到密钥,好在成绩发布之前将成绩改过来。

    输入描写叙述:

    输入由多组数据构成。每组数据第一行为一个数 n(1<=n<=10^5),表示数的数量。第二行 n 个整数表示文件里的每一个数(1<=每一个数<=10^9)。以文件结尾。

    输出描写叙述:

    对于每组数据输出一行,先输出数据组数,再输出二进制中含 1 最少的数,假设有多个数符合条件,输出最小的那个。

    答题说明:

    输入例子:

    5

    3 2 4 5 6

    输出例子:

    Case 1: 2 


    分析:

           这道题不难,但有个大坑害我提交了几次才AC。在输出的位置"Case 1: 2",这里“Case”与组数“1”之间有空格,分号“:”和结果“2”之间也有空格(在此空格上栽过跟头,我仅仅能说受教育啦)。


    CODE:

    #include "stdio.h"
    #define MAXN 1000000000+10
    
    int main()
    {
    	long long m,result;
    	int n,min,num=1;
    	while(~scanf("%d",&n)){
    		
    		min=100; result=MAXN;	//初始化 
    		
    		for(int i=0;i<n;i++){
    			scanf("%lld",&m);
    			int total=0;
    			long long temp=m;
    			while(temp>0){
    				if(temp%2==1) total++;
    				temp/=2;
    			}
    			
    			if(total<min){
    				result=m; min=total;
    			}else if(total==min && m<result){
    				result=m; min=total;
    			}			
    		}
    		printf("Case %d: %lld
    ",num++,result);
    	}
    	
    	return 0;	
    }




  • 相关阅读:
    ubuntu 安装 redis desktop manager
    ubuntu 升级内核
    Ubuntu 内核升级,导致无法正常启动
    spring mvc 上传文件,但是接收到文件后发现文件变大,且文件打不开(multipartfile)
    angular5 open modal
    POJ 1426 Find the Multiple(二维DP)
    POJ 3093 Margritas
    POJ 3260 The Fewest Coins
    POJ 1837 Balance(二维DP)
    POJ 1337 A Lazy Worker
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5075963.html
Copyright © 2011-2022 走看看