C语言基础题:吃冰棍(C语言版)
创始人
2024-11-06 12:09:37

1.题目描述


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

2.输入格式


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

3.输出格式


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

4.输入输出样例

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

5.说明/提示


数据规模与约定
对于 100% 的数据,1

代码:

#include   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; } 

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...