巧克力

来源:互联网 发布:大学生生活费的数据 编辑:程序博客网 时间:2024/03/28 23:04

题目描述
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 longusing namespace std;int main(){    ll n;    scanf("%lld",&n);    ll t=n;    while(t)     n-=t%2,t/=2;    printf("%lld",n);}