前进

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
 
 1 #include <stdio.h>
 2 
 3 int main(){
 4     int T;
 5     int number;
 6     int time;
 7     
 8     scanf("%d",&T);
 9     
10     while(T--){
11         time=0;
12         scanf("%d",&number);
13         
14         while(number){
15             if(number%2==1){
16                 number--;
17                 time++;
18             }
19             
20             else
21                 number/=2;
22         }
23         
24         printf("%d
",time);
25     }            
26     return 0;
27 }
原文地址:https://www.cnblogs.com/zqxLonely/p/4055644.html