巧克力棒

题目描述

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

2-1 4-3 8-7 ......

3-1 5-3 9-7 ......

懂了嗎?

代碼實現:

 #include<cstdio>
int n,ans;
int main(){
  scanf("%d",&n);
  ans=n;
  while(n){n-=n&(-n);ans--;}
  printf("%d\n",ans);
  return ;
}

题目来源:CODE[VS]

新年的巧克力棒

马上就要到羊年了,羊村一片欢腾,懒羊羊则懒洋洋地躺在草坪上吃新年的巧克力棒。

他手上的巧克力棒是个由 nn 个巧克力单元格组成的长度为 nn 的长条,现在懒羊羊想把巧克力棒掰开成一个个小单元格。

初始时懒羊羊会把这根巧克力棒丢在草坪上,然后每次懒羊羊会从草坪上拿起一根长度大于 11 的巧克力棒,然后从某两个相邻的单元格的间隙处掰开变成两根巧克力棒,然后把这两根巧克力棒丢在草坪上。懒羊羊初始愉悦值为 00,每次掰开巧克力棒后如果这两根巧克力棒长度相等,那么懒羊羊将提升 11 点愉悦值。

当然,草坪上全是长度为 11 的巧克力棒时懒羊羊就会停止操作。现在懒羊羊想知道,他能获得的愉悦值最多是多少?

输入格式

一行一个正整数 TT。

接下来 TT 行,每行一个正整数 nn 表示巧克力棒的长度,你需要对每个给出的 nn 计算最多能获得的愉悦值。

输出格式

TT 行每行一个整数,表示懒羊羊最多能获得的愉悦值。

样例一

input

5
1
3
4
7
233333333

output

0
1
3
4
233333319

explanation

对于 n=1n=1,初始时草坪上已经全是长度为 11 的了,所以愉悦值为 00。

对于 n=3n=3,懒羊羊可以先把它掰开变成一根长度为 11 的和一根长度为 22 的巧克力棒;然后再把长度为 22 的巧克力棒从正中间掰开获得 11 点愉悦值,所以答案是 11。

对于 n=4n=4,懒羊羊可以先从正中间掰开变成两根长度为 22 的巧克力棒,获得 11 点愉悦值;然后再对于每根长度为 22 的巧克力棒从正中间掰开各获得 11 点愉悦值,所以答案是 33。

限制与约定

对于所有数据,T≤20T≤20。

测试点编号 nn 的规模
1 n≤5n≤5
2 n≤20n≤20
3 n≤1000n≤1000
4
5
6 n≤109n≤109
7
8
9
10

时间限制:1s1s

空间限制:256MB256MB

来源

UOJ Goodbye Jiawu

思路同上;

代码实现

 #include<cstdio>
int n,m,ans;
int main(){
scanf("%d",&m);
while(m--){
scanf("%d",&n);
ans=n;
while(n){n-=n&(-n);ans--;}
printf("%d\n",ans);
}
return ;
}

巧克力棒&&新年的巧克力棒的更多相关文章

  1. uoj 66 新年的巧克力棒 数学

    #66. 新年的巧克力棒 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://uoj.ac/problem/66 Description 马上就要 ...

  2. UOJ66 新年的巧克力棒

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  3. 【BZOJ1299】巧克力棒(博弈论,线性基)

    [BZOJ1299]巧克力棒(博弈论,线性基) 题面 BZOJ 题解 \(Nim\)博弈的变形形式. 显然,如果我们不考虑拿巧克力棒出来的话,这就是一个裸的\(Nim\)博弈. 但是现在可以加入巧克力 ...

  4. uoj Goodbye Jiawu

    这次比赛真是太伤我心了. 比(惨)赛(不)结(忍)果(睹) 完挂感言 uoj round 5已经挂了一次了,没想到还要再挂第二次. 这次比赛的期望得分是\(100+100+100+70+10\)的.没 ...

  5. [BZOJ1299]巧克力棒(博弈论)

    题目:http://hzwer.com/1976.html 分析:先Orz hzwer 对于盒子外面的巧克力棒,就是Nim游戏. 所以就很容易想到先手第一步最好从盒子中取出m根巧克力棒,使得这些巧克力 ...

  6. BZOJ 1299: [LLH邀请赛]巧克力棒 [组合游戏]

    每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度. Nim游戏多了一个决策:拿出一些石堆 显然只要给对方构造异或和为0的子集就行了 暴枚子集... #include &l ...

  7. BZOJ1299: [LLH邀请赛]巧克力棒(Nim游戏)

    Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 552  Solved: 331[Submit][Status][Discuss] Descriptio ...

  8. BZOJ1299 巧克力棒

    题面: TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. 他们以最佳策略一共进行了10轮(每次一盒).你 ...

  9. BZOJ1299[LLH邀请赛]巧克力棒——Nim游戏+搜索

    题目描述 TBL和X用巧克力棒玩游戏.每次一人可以从盒子里取出若干条巧克力棒,或是将一根取出的巧克力棒吃掉正整数长度.TBL先手两人轮流,无法操作的人输. 他们以最佳策略一共进行了10轮(每次一盒). ...

随机推荐

  1. openstack instance resize to rebuild

  2. 70.资金管理-福利表管理 Extjs 页面

    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8&quo ...

  3. windows2003下svn的安装

    Windows2003下svn平台搭建 编辑:dnawo 日期:2010-08-03 转自http://www.mzwu.com/article.asp?id=2557 字体大小: 小 中 大     ...

  4. memcache缓存系统

    一.缓存系统 静态web页面: 1.在静态Web程序中,客户端使用Web浏览器(IE.FireFox等)经过网络(Network)连接到服务器上,使用HTTP协议发起一个请求(Request),告诉服 ...

  5. 实例化flask的参数及对app的配置

    Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...

  6. 怎么在windows上安装 ansible How to install ansible to my python at Windows

    答案是不能再window上安装,答案如下: It's back! Take the 2018 Developer Survey today » Join Stack Overflow to learn ...

  7. EF--ModelFirst

    EF框架有三种基本的方式:DB First,Model First,Code First.这里简单的说一下Model First,适合没有基础的同学照着做,学习基础的东西. 1.建立一个类库项目,这个 ...

  8. Elasticsearch之sense插件安装之后的浏览详解

    前提博客是 Elasticsearch之sense插件的安装(图文详解) 立马,可以看到 http://192.168.80.145:5601/app/sense 以后更新

  9. Spark 概念学习系列之Spark基本概念和模型(十八)

    打好基础,别小瞧它! spark的运行模式多种多样,在单机上既可以本地模式运行,也可以伪分布模式运行.而当以分布式的方式在集群中运行时.底层的资源调度可以使用Mesos或者Yarn,也可使用spark ...

  10. 将npm修改为cnpm

    1.更改npm的源地址 检测是否更改成功 2.用cnpm代替npm npm常用命令: npm更新:npm install -g npm npm初始化生成package.json:   npm init ...