当前位置: 首页 > news >正文

C语言基础题:吃冰棍(C语言版)

1.题目描述


机器猫喜欢吃冰棍。
买一根冰棍,吃完了会剩一个木棒;每三个木棒可以兑换一个冰棍。兑换出来的冰棍,吃完之后也能剩下一个木棒。
所以,如果机器猫买了5根冰棍,他可以吃完之后得到5个木棒;拿3个木棒兑换1根冰棍,余2个木棒;吃完兑换来的冰棍之后,手上有3个木棒,又能兑换一个冰棍。最后,机器猫实际上吃了7个冰棍。
机器猫想要吃到 几 个冰棍,想问最开始至少需要去买多少根冰棍?

2.输入格式


仅一行,一个正整数,表示 n。

3.输出格式


仅一行,一个正整数,表示需要买的冰棍数量。

4.输入输出样例

输入1:
7
输出1:
5
输入2:
20
输出2:
14

5.说明/提示


数据规模与约定
对于 100% 的数据,1 <n< 100000000.

代码:

#include <stdio.h>int main() {long long n;scanf("%lld", &n);long long left = 0, right = n; // 最少0根,最多n根long long result = n;while (left <= right) {long long mid = left + (right - left) / 2;long long totalIceCreams = mid; // 起始购买的冰棍数量long long sticks = mid; // 吃完后剩下的木棒// 计算可以吃到多少冰棍while (sticks >= 3) {long long newIceCreams = sticks / 3;totalIceCreams += newIceCreams;sticks = sticks % 3 + newIceCreams; // 剩下的木棒加上新的木棒}if (totalIceCreams >= n) {result = mid; // 可以满足条件,记录结果right = mid - 1; // 尝试更少的冰棍} else {left = mid + 1; // 需要更多的冰棍}}printf("%lld\n", result);return 0;
}

http://www.lryc.cn/news/416571.html

相关文章:

  • C++中,vector、deque、list、set、multiset、unordered_set和unordered_multiset容器类的总结
  • Python处理Redis
  • nodejs多版本随心切换-windows
  • json文件格式
  • 日撸Java三百行(day15:栈的应用之括号匹配)
  • Oracle-OracleConnector
  • 『 Linux 』线程池与 POSIX 线程的封装编码实现
  • 【C++】————哈希表
  • 前端学习AI历程
  • 常见中间件漏洞复现之【Tomcat】!
  • C++并发编程(一):线程基础
  • enq: HW - contention事件来啦
  • MyBatis补充
  • 系统架构师(每日一练16)
  • 实践致知第17享:电脑忽然黑屏的常见原因及处理方法
  • 微信小程序--实现地图定位---获取经纬度
  • 【Python系列】使用 `isinstance()` 替代 `type()` 函数
  • 【多模态大模型】 BLIP-2 in ICML 2023
  • HPC高性能计算平台
  • 前端常用的几个工具网站
  • 支付功能之代收代付
  • QPixmap
  • Laravel门面之下:构建自定义门面应用的艺术
  • 智启万象 | 2024 Google 开发者大会直播攻略
  • 技巧:print打印内容到控制台时信息显示不全
  • 3.表的操作
  • AI回答:C#项目编译后生成部分文件的主要职责
  • RPC通信的简单流程
  • 前端发版(发包)缓存,需要强制刷新问题处理
  • 洛谷练习(8.4/8.5)