众所周知,bigbaizhou有许多妹子。有一天,bigbaizhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们。具体地,这根巧克力棒长为 n,他想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后分给妹子们。
但是他妹子之一中的 15zhazhahe 有强迫症。若它每次将一根长为 k 的巧克力棒折成两段长为 a 和 b 的巧克力棒,此时若 a=b,则15zhazhahe会得到一点高兴值。
bigbaizhou想知道15zhazhahe最多能获得多少高兴值。
输入
输入数据为T组(T <= 10000),每组数据读入一个n(n<=1000000000)
输出
一行一个整数表示能获得的最大高兴值
样例输入
1
5
样例输出
3
提示
将 5 掰成 1+4,将4掰成2+2 得到1点高兴值 ,将剩下的两个2 掰成1+1 ,得到2点高兴值,总共三点高兴值。
#include<stdio.h>
void find(int t)
{
int i,n;
for(i=0; i<t; i++)
{
scanf("%d",&n);
if (n==1) printf("0\n");
int count=0;
while(n)
{
count+=n/2;
n/=2;
}
printf("%d\n",count);
}
}
int main() {
int t,i,n;
scanf("%d",&t);
find(t);
return 0;
}