您现在的位置是:C语言基础题:吃冰棍(C语言版) >>正文
C语言基础题:吃冰棍(C语言版)
德薄能鲜网43人已围观
简介1.题目描述。喜欢吃冰棒的机器猫。买冰棍吃完会留下一根木棒;每三根木棒可以换一根冰棒。交换的冰棒,也可以在吃完后留下一根木棒。所以,如果机器猫买了5根冰棍...
1.题目描述。
喜欢吃冰棒的机器猫。
买冰棍吃完会留下一根木棒;每三根木棒可以换一根冰棒。交换的冰棒,也可以在吃完后留下一根木棒。
所以,如果机器猫买了5根冰棍吃完后,他可以得到五根木棍;用三根木棍换一根冰棍剩下的两根木棒;吃完交换的冰棒后,手里有三根木棒,又可以换冰棍了。最后,机器猫实际上吃了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;}。
Tags:
相关文章
银河战士恶魔城游戏有哪些? 十大必玩类银河战士恶魔城游戏
C语言基础题:吃冰棍(C语言版)探索游戏世界的奇妙之旅!银河战士恶魔城游戏十大必玩盘点带你穿越迷宫般的关卡,领略经典与创新并存的挑战。从复古像素到现代艺术风格,硬核玩家和新冒险家都会在这份名单中找到自己的鲜血和惊喜。准备好了吗?沉浸...
阅读更多
狼蛛F3099三模无线键盘,手价65.7元
C语言基础题:吃冰棍(C语言版)...
阅读更多
12088 元起,英特尔处理器,微软 Surface Pro 11 和 Surface Laptop 7 国家银行商业版发布
C语言基础题:吃冰棍(C语言版)IT之家 2 月 6 微软今天发布了今天的消息 Surface Pro 11 商用版和 Surface Laptop 7 国行版商用版定价均为 12088 元起。新产品已开始预售,将于 2 月 18...
阅读更多