描述
题解
对n不断拆解即可,有些贪心的意味。
代码
#include <stdio.h>
#include <string.h>
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
int n;
scanf("%d", &n);
if (n == 1)
{
printf("0\n");
continue;
}
int sum = 0;
if (n & 1)
{
n -= 1;
sum = 1;
}
while (n != 1)
{
n /= 2;
if (n & 1 && n != 1)
{
n -= 1;
sum++;
}
sum++;
}
printf("%d\n", sum);
}
return 0;
}