欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF268B.Buttons
Buttons
题目描述
Manao 正在尝试打开一个非常有挑战性的锁。这个锁上有 个按钮,要打开它,你需要按照特定的顺序依次按下这些按钮。当你按下某个按钮时,要么该按钮一直保持按下的状态(表示你猜对了,下一个该按的就是这个按钮),要么所有已经按下的按钮会全部复位。当所有按钮都被同时按下时,锁就会被打开。
以有三个按钮为例。假设正确的开启顺序是:{2, 3, 1}。如果你第一次按 1 或 3,则按钮会立即复位。如果你先按 2,则它会保持按下状态。如果在 2 之后按 1,全部按钮会复位。如果在 2 之后按 3,则 2 和 3 会都保持按下。当你已经有两个按钮保持按下时,只需按下按钮 1 就可以打开锁。
Manao 并不知道正确的开启顺序。但是他非常聪明,并且会用最优的策略行动。请计算在最坏情况下,他需要按下按钮的次数。
输入格式
一行一个整数 (),表示锁上有多少个按钮。
输出格式
输出一行,在最坏情况下,Manao 需要按下按钮的次数。
说明/提示
请考虑第一个样例测试。Manao 可能第一次按错按钮。如果出现这种情况,他第二次就能猜中正确的按钮。等到他知道第一个正确按钮后,他第三次按就能推测出第二个正确按钮。由此,在最坏情况下,他只需按下 3 次按钮。
由 ChatGPT 5 翻译
样例
2
3
3
7
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |