NC14585 大吉大利,今晚吃鸡
NC14585 大吉大利,今晚吃鸡
题目
题目描述
糖和抖m在玩个游戏,规定谁输了就要请谁吃顿大餐:抖m给糖a b c三个驻, 并在a柱上放置了数量为n的圆盘,圆盘的大小从上到下依次增大,现在要做的事就是把a柱的圆盘全部移到c柱,移动的过程中保持小盘在上,大盘在下,且限定圆盘只能够移动到相邻的柱子,即a柱子上的圆盘只能够移动到b,b柱子上的圆盘只能够移动到a或者c,c同理。现在请你设计一个程序,计算所需移动的最小步数, 帮助糖赢得大餐!
输入描述
每一行输出有一个整数 \(n\) \((0\leq n<26)\), 直至文件末尾。
输出描述
对于每一组数据,输出一行,输出移动的最小步数 \(M\)。
示例1
输入
1
输出
2
题解
思路
知识点:递归,思维。
与普通的汉诺塔不同的是,此汉诺塔的 \(f(n)\) 表示的 \(A\) 到 \(C\) 的两步而不是一步。过程如下:
- 把 \(n-1\) 个圆盘从 \(A\) 移到 \(B\) 再移到 \(C\) 走了 \(f(n-1)\) 步
- 把第 \(n\) 个盘子从 \(A\) 移到 \(B\) 走了一步
- 把 \(n-1\) 个圆盘从 \(C\) 移到 \(B\) 再移到 \(A\) 走了 \(f(n-1)\) 步
- 把第 \(n\) 个盘子从 \(B\) 移到 \(C\) 走了一步
- 把 \(n-1\) 个圆盘从 \(A\) 移到 \(B\) 再移到 \(C\) 走了 \(f(n-1)\) 步
于是有递推公式 \(f(n) = 3f(n-1) + 2\) 。
解得 \(f(n) = 3^n-1\) 。
时间复杂度 \(O(\log n)\)
空间复杂度 \(O(1)\)
代码
#include <bits/stdc++.h>
#define ll long long
using namespace std;
/* long long cnt;
void hanoi2(char A, char B, char C, int n) {
if (n == 1) {
cout << "Step " << ++cnt << ": " << A << " -> " << B << '\n';
cout << "Step " << ++cnt << ": " << B << " -> " << C << '\n';
return;
}
hanoi2(A, B, C, n - 1);
cout << "Step " << ++cnt << ": " << A << " -> " << B << '\n';
hanoi2(C, B, A, n - 1);
cout << "Step " << ++cnt << ": " << B << " -> " << C << '\n';
hanoi2(A, B, C, n - 1);
} */ ///这里的f(n) 指从A到C的两步
ll qpow(ll a, int k) {
ll ans = 1;
while (k) {
if (k & 1) ans = ans * a;
k >>= 1;
a = a * a;
}
return ans;
}
int main() {
std::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n;
while (cin >> n) {
//cnt = 0;
//hanoi2('A', 'B', 'C', n);
//cout << cnt << '\n';
cout << qpow(3, n) - 1 << '\n';
}
return 0;
}
NC14585 大吉大利,今晚吃鸡的更多相关文章
- [BZOJ5109][LOJ #6252][P4061][CodePlus 2017 11月赛]大吉大利,今晚吃鸡!(最短路+拓扑排序+传递闭包+map+bitset(hash+压位))
5109: [CodePlus 2017]大吉大利,晚上吃鸡! Time Limit: 30 Sec Memory Limit: 1024 MBSubmit: 107 Solved: 57[Sub ...
- 大吉大利,晚饭吃鸡!——accept关闭问题
假期收尾了,学芽子们都军训了.一群张一山和周冬雨在校内晃晃悠悠,说起来春风十里也就军训比较有意思.对于我这种一年追一部剧的人,显然是有点对不住.在我假期任务即将圆满之际,我开始放慢脚步寻找生活的美妙时 ...
- GMA Round 1 大吉大利,晚上吃鸡
传送门 大吉大利,晚上吃鸡 新年走亲访友能干点啥呢,咱开黑吃鸡吧. 这里有32个人,每个人都可能想玩或者不想玩,这样子一共有$2^{32}$种可能.而要开黑当然得4人4人组一队(四人模式),所以说如果 ...
- [BZOJ5109]大吉大利,晚上吃鸡!
[BZOJ5109]大吉大利,晚上吃鸡! 题目大意: 一张\(n(n\le5\times10^4)\)个点\(m(m\le5\times10^4)\)条边的无向图,节点编号为\(1\)到\(n\),边 ...
- 【BZOJ5109】[CodePlus 2017]大吉大利,晚上吃鸡! 最短路+拓扑排序+DP
[BZOJ5109][CodePlus 2017]大吉大利,晚上吃鸡! Description 最近<绝地求生:大逃杀>风靡全球,皮皮和毛毛也迷上了这款游戏,他们经常组队玩这款游戏.在游戏 ...
- 为什么MOBA、“吃鸡”游戏不推荐用tcp协议——实测数据
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法. ...
- 3D位置语音,引领吃鸡游戏体验升级
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯游戏云 导语:在刚刚结束的首届腾讯用户开放日上,腾讯音视频实验室带着3D位置音效解决方案,向所有用户亮相,为用户提供360度立体空间的 ...
- 【程序员的吃鸡大法】利用OCR文字识别+百度算法搜索,玩转冲顶大会、百万英雄、芝士超人等答题赢奖金游戏
[先上一张效果图]: 一.原理: 其实原理很简单: 1.手机投屏到电脑: 2.截取投屏画面的题目部分,进行识别,得到题目和三个答案: 3.将答案按照一定的算法,进行搜索,得出推荐答案: 4.添加了一些 ...
- tcp没用吗?为什么MOBA、“吃鸡”游戏不推荐用tcp协议
本文由云+社区发表 作者:腾讯云游戏行业资深架构师 余国良 MOBA类和"吃鸡"游戏为什么对网络延迟要求高? 我们知道,不同类型的游戏因为玩法.竞技程度不一样,采用的同步算法不一样 ...
随机推荐
- for in 语法遍历对象
1. 语法格式 for (变量 in 对象) { console.log(变量) } 2. 代码实例 // 遍历对象 var obj = { name: 'pink老师', age: 18, se ...
- pgpool-II 4.3 中文手册 - 入门教程
本章解释了如何开始使用 Pgpool-II. 安装 在本节中,我们假设您已经安装了 Pgpool-II 与 PostgreSQL 集群. 你的第一个复制(Replication) 在本节中,我们将解释 ...
- .NET Core企业微信网页授权登录
1.开发前准备 参数获取 corpid 每个企业都拥有唯一的corpid,获取此信息可在管理后台"我的企业"-"企业信息"下查看"企业ID" ...
- MySQL数据存储
MySQL体系架构 客户端连接器 提供与MySQL服务器建立的支持.目前几乎支持所有主流的服务端编程技术,例如常见的 Java.C.Python..NET等,它们通过各自API技术与MySQL建立连接 ...
- 如何使用phpstudy搭建sqli-lab靶场
一.环境准备 下载并安装phpstudy,链接如下: phpstudy下载 选择自己想要的版本,安装目录自己选,其他的一路默认即可 二.下载源码 源码链接:sqli-labs源码下载 选择Downlo ...
- 神器 Nginx 的学习手册 ( 建议收藏 )
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 ...
- .NetCore Hangfire任务计划
安装Hangfire 新建ASP.NET Core空 项目,.Net Core版本3.1 往*.csproj添加包引用,添加新的PackageReference标记.如下所示.请注意,下面代码段中的版 ...
- 小程序扫码、上传图片、css时间轴
de <!-- 导航 --> <view class="navSec flexBox"> <text class="navItem {{ s ...
- 轮播——swiper
swiper组件 1.轮播数据是使用ajax进行填充的话,可能数目是0~n,在数目是1时,轮播会出现一些问题(出现空白侧),这时需作出判断(一张图片不滑动,多张就就行滑动),方法如下(以下方法中,si ...
- font-family样式对照表
.a { font-family: "微软雅黑" } .b { font-family: "黑体" } .c { font-family: "楷体&q ...