hdu2568

/*
 * =====================================================================================
 *
 *       Filename:  hdu2568.c
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  2013年11月15日 11时40分45秒
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  Wenxian Ni (Hello World~), niwenxianq@qq.com
 *   Organization:  AMS/ICT
 *
 * =====================================================================================
 */

/*
 *前进

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3366    Accepted Submission(s): 2677


Problem Description
轻松通过墓碑,进入古墓后,才发现里面别有洞天。
突然,Yifenfei发现自己周围是黑压压的一群蝙蝠,个个扇动翅膀正准备一起向他发起进攻!
形势十分危急!
好在此时的yifenfei已经不是以前那个经常被lemon抢走MM的菜鸟了!面对众多蝙蝠的嗜血狂攻,只见yifenfei使出轻灵的剑法,刷,刷,刷,瞬间搞定……
现已知yifenfei使用了2招(剑招A和剑招B):剑招A,一招能杀死一半的蝙蝠。但是如果当前的蝙蝠数为奇数,那么就必须先出一招剑招B杀死其中任意一个,使蝙蝠数为偶数,再出剑招A。
现在请问:杀死n只蝙蝠需要使出多少招剑招B?

 

Input
输入数据首先给出一个整数C,表示测试组数。
然后是C组数据,每组包含一个正整数n (n<2^31)。

 

Output
对应每组数据,请输出一个整数,表示yifenfei使用的剑招B的数目,每组输出占一行。
 

Sample Input
2
1
5
 

Sample Output
1
2

*/
#include<stdio.h>
int main()
{
    int nCase;
    int n;
    int count;
    scanf("%d",&nCase);
    while(nCase--)
    {
        scanf("%d",&n);
        count = 0;
        while(n != 0) 
        {
            if(n%2==0)
                n /= 2;
            else
            {
                n = n-1;
                count++;
            }
            
        }
        printf("%d
",count);

    }
    return 0;
}

说明

1. 模拟就可以了

2. 水题

每天早上叫醒你的不是闹钟,而是心中的梦~
原文地址:https://www.cnblogs.com/vintion/p/4117027.html