前进

前进

Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other)
Total Submission(s) : 18   Accepted Submission(s) : 13
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
 

Author
yifenfei
 

Source
ACM程序设计期末考试081230

代码:

#include<iostream>

#include<algorithm>
using namespace std;
int main()
{
    long long int n,i,j,a;
    cin>>n;
    while(n--)
    {
        i=0;
        cin>>a;
        while(a!=0)
        {
            if(a%2==0)
            a=a/2;
            else
            {
                a=a-1;
                i++;
            }
        }
        cout<<i<<endl;
    }
    return 0;
}