链接:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4352

题意:

一开始有1个红气球。每小时后,1个红气球会变成3个红气球和1个蓝气球,而1个蓝气球会变成4个蓝气球。
问:经过k小时后,第A~B行一共有多少个红气球?例如,k=3,A=3,B=7,答案为14。

分析:

设 sum(k,i) 表示k小时后第1~i行的红气球总数,R表示2的k次方,M表示R的中点(即R>>1)。
可以发现,当 i = R 时,sum(k,i) = sum(k-1,M) * 3;
当 i <= M 时,sum(k,i) = sum(k-1,i) * 2;
当 i > M 时,sum(k,i) = sum(k-1,M) * 2 + sum(k-1,i-M)。
递归求解即可,k小时后第A~B行的红气球总数为 sum(k,B) - sum(k,A-1) 。

代码:

 1 #include <cstdio>
 2
 3 typedef long long int LLI;
 4
 5 LLI sum(LLI k, LLI i){
 6     if(k == 0) return i == 1;
 7     LLI R = 1LL << k, M = 1LL << k - 1;
 8     if(i == R) return sum(k - 1, M) * 3;
 9     if(i <= M) return sum(k - 1, i) * 2;
10     return sum(k - 1, M) * 2 + sum(k - 1, i - M);
11 }
12
13 int main(){
14     int T, cases = 1;
15     scanf("%d", &T);
16     while(T--){
17         LLI k, a, b;
18         scanf("%lld%lld%lld", &k, &a, &b);
19         printf("Case %d: %lld\n", cases++, sum(k, b) - sum(k, a - 1));
20     }
21     return 0;
22 }

转载于:https://www.cnblogs.com/hkxy125/p/8138289.html

UVa 12627 - Erratic Expansion相关推荐

  1. Uva 12627 Erratic Expansion(不稳定膨胀)

    题目链接 : Erratic Expansion 大致题意: 开始时有一个红气球,每过一段时间,气球会膨胀, 一个红气球膨胀成三个红气球,一个蓝气球膨胀成四个蓝气球(如图) 题目输入正整数n表示n组数 ...

  2. UVa 12627 Erratic Expansion - 分治

    因为不好复制题目,就出给出链接吧: Vjudge传送门[here] UVa传送门[here] 请仔细看原题上的那幅图,你会发现,在时间t(t > 0),当前的气球构成的一幅图,它是由三个时间为( ...

  3. uva 12627——Erratic Expansion

    题意:一开始有1个红气球,每小时一个红气球都会变成3个红气球和1个蓝气球,1个蓝气球会变成4个蓝气球,问k个小时后a行到b行的红气球的数量. 思路:递推.a为偶数时,计算a+1到b以及a本行的红气球数 ...

  4. Uva 12627 Erratic Expansion

    这道题大体意思是利用一种递归规则生成不同的气球,问在某两行之间有多少个红气球. 我拿到这个题,一开始想的是递归求解,但在如何递归求解的思路上我的方法是错误的.在研读了例题上给出的提示后豁然开朗(顺便吐 ...

  5. UVA 12627 Erratic Expansion

    题目大致意思为 告诉你一个红球为0时状态,已知一个红球每过一个时间会变为文档所示图中的3红1蓝,而蓝球每过一个时间则会变为4个蓝球.问在某一时刻,h1与h2之间的红球有几个. RT,这一题刚看到的时候 ...

  6. UVA - 12627 Erratic Expansion : 递归

    题目点此跳转 思路  题目意思是(书上原话)一开始有一个红气球.每小时后,一个红气球会变成3个红气球和一个蓝气球,一个蓝气球会变成4个蓝气球,如图所示分别是经过0, 1, 2, 3小时后的情况.经过k ...

  7. Uva - 12627 - Erratic Expansion

    找到递推公式,题目就引刃而解了.数学公式博文没办法写,就写在了word上,切过来了: 用 f 或者 g 都能求出,我两个方法都试了,结果用 g 要比 f 快了近一倍,原本以为 f 会快些,可能是因为往 ...

  8. UVA - 12627 - Erratic Expansion(找规律递归)

    递归找规律即可,用前b行减去前a-1行的红气球个数求解,细节见代码 #include<cstdio> #include<cstring> #include<cstdlib ...

  9. uva 12627 Erratic Expansion

    原题: Piotr found a magical box in heaven. Its magic power is that if you place any red balloon inside ...

最新文章

  1. 九、OLTP 性能调整与优化--结语
  2. 2020人工神经网络第一次作业-参考答案第三部分
  3. flex布局学习笔记
  4. 顺序查找与二分查找算法
  5. 读人是基础,看人是关键,做人最重要
  6. 华为云网络测量如何“悬丝诊脉”
  7. TensorFlow 1.11.0正式版发布了,强力支持Keras
  8. 微信小程序——flex弹性布局水平垂直居中
  9. win 10 mysql8.0安装
  10. 架空线路的基本结构及组成
  11. 激荡20年的百度帝国,曾经的王者为何从BAT掉队?到底发生了什么?
  12. 完美卸载mac电脑里的软件及残留清理教程
  13. 解决iOS中调用系统中的相机,显示英文标题
  14. 文字转化为二维码(数据加密)
  15. 180902 逆向-网鼎(4-dalao)
  16. 一个奇鸽船新体验:类似的木函软件
  17. 中位数应用-货仓选址-纸牌均分-糖果传递-七夕祭
  18. java基础思维导图(java基础部分)
  19. Nodejs Addons
  20. 高中计算机教师专业,高中计算机教师资格证,要计算机专业证书吗

热门文章

  1. 神策数据携手老虎证券,用科技赋能美港股券商打造极致体验
  2. 中国海洋大学2022CTF校赛
  3. 整合资源对个人站长的重要性
  4. Vue中,有哪些烂熟于心的知识
  5. 黑猴子的家:HBase 服役节点(commissioning)
  6. 鬼吹灯之龙岭迷窟 4192
  7. 云计算 第4章 云计算与移动互联网/物联网
  8. 很多时候在考虑设计而不是考虑编码的时候, 接口才真正清晰,明朗的把它的原理展现给你。
  9. 解决ios浏览器视频无法播放问题
  10. rabitMQ work模式二 按能力分配任务