题目描述
LYK找到了一根巧克力棒,但是这根巧克力棒太长了,LYK无法一口吞进去。
具体地,这根巧克力棒长为n,它想将这根巧克力棒折成n段长为1的巧克力棒,然后慢慢享用。
它打算每次将一根长为k的巧克力棒折成两段长为a和b的巧克力棒,此时若a=b,则LYK觉得它完成了一件非常困难的事,并会得到1点成就感。
LYK想知道一根长度为n的巧克力棒能使它得到最多几点成就感。
输入格式(chocolate.in)
第一行一个数n。
输出格式(chocolate.out)
一个数表示答案。
输入样例
7
输出样例
4
数据范围
对于20%的数据n<=5。
对于50%的数据n<=20。
对于80%的数据n<=2000。
对于100%的数据n<=1000000000。
样例解释
将7掰成3+4,将3掰成1+2,将4掰成2+2获得1点成就感,将剩下的所有2掰成1+1获得3点成就感。总共4点成就感。
其实就是看n/2能分出几个奇数来。
#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;
int main()
{
ll n;
scanf("%lld",&n);
ll t=n;
while(t)
n-=t%2,t/=2;
printf("%lld",n);
}