题目:GDUTOJ | pigofzhou的巧克力棒 (gdutcode.cn)

之前看了大佬博客的题解,一直没懂(我太菜了),后来听了朋友@77的讲解,终于懂了。

和拆分出2的n次方不一样,这是一种自下而上的方法。

从巧克力被全部折完开始,假设n==7,此时有7段长度为1的巧克力棒,我们试着向上还原,

于是可以把7段长度为1的巧克力棒两两合并为3段长度为2(还有1因为合并不了被舍弃了),这个过程就是7/2==3;

我们可以继续两两合并,把3段长度为2合并为1段长度为4,这个过程就是3/2==1;

所以答案就是3+1==4;

代码:

#include <iostream>
using namespace std;
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
ll t;
cin >> t;
while (t--)
{
ll n, ans = 0;
cin >> n;
while (n)
{
ans += n / 2;
n /= 2;
}
cout << ans << endl;
}
return 0;
}

最新文章

  1. struts2配置文件中Action中的各属性的含义
  2. C++基础练习题(一): 查找最短单词
  3. LSM Tree解析
  4. js+css:43种常见的浏览器兼容性问题大汇总
  5. Flash AIR 保存与读取
  6. js bom中浏览器兼容问题判断代码
  7. C语言实现界面(不通过MFC\避免遗忘)
  8. vS2010 列表控件 加入右键菜单
  9. C#-面向对象的多态思想 ---ShinePans
  10. Java之反射--练习
  11. python中math模块常用的方法整理
  12. thunderbird 日历
  13. 使用 nodeJs 开发微信公众号(获取access_token)
  14. linux 网络虚拟化: network namespace 简介
  15. 关于 Cortex-M3 的双堆栈机制
  16. 错误解决记录------------mysql连接本地数据库显示&quot;can&#39;t get hostname for your address&quot;
  17. Maven CXF wsdl2Java String生成JAXBElement&lt;Xxx&gt; 解决方法
  18. switch omega - VNP
  19. 如何在Java 环境下使用 HTTP 协议收发 MQ 消息
  20. 数据仓库基础(八)Informatica 小例子

热门文章

  1. hdu 5090 Game with Pearls (额,, 想法题吧 / 二分图最大匹配也可做)
  2. 阿里云ECI如何6秒扩容3000容器实例?
  3. 小白都能看懂的Spring源码揭秘之IOC容器源码分析
  4. JSON数据和Java对象的相互转换
  5. 【JAVA】笔记(4)---继承;方法覆盖;多态机制;super;
  6. Salesforce Consumer Goods Cloud 浅谈篇一之基础介绍
  7. C语言二分查找法
  8. k8s网络模型与集群通信
  9. R数据分析:潜类别轨迹模型LCTM的做法,实例解析
  10. Vue安装Vue Devtools调试工具提示 Error: Cannot find module &#39;@vue-devtools/build-tools&#39; 解决办法