• 巧克力棒


    巧克力棒(chocolate)


    Time Limit:1000ms Memory Limit:64MB

    题目描述

    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 点成就感。

    思路:

      有公式,具体就不推了,看代码吧

     

      来,上代码:

    #include<cmath>
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    long long A,B;
    int T;
    int main() { freopen("chocolate.in","r",stdin); freopen("chocolate.out","w",stdout); scanf("%I64d",&A); B=A; while (A) {B-=A%2; A/=2;} printf("%I64d ",B); return 0; }

      

  • 相关阅读:
    【题解】1621. 未命名
    【模板】关于vector的lower_bound和upper_bound以及vector基本用法 STL
    【题解】数颜色 STL vector数组
    【题解】斐波拉契 luogu3938
    【题解】天天酷跑
    【题解】Grape luogu1156改 dp
    【题解】逐个击破 luogu2700
    【题解】ball 数论
    【题解】逐个击破 luogu2700
    【题解】平方根
  • 原文地址:https://www.cnblogs.com/IUUUUUUUskyyy/p/6045575.html
Copyright © 2020-2023  润新知