• 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

    代码:

    1. #include
    2. int main() {
    3. long long n;
    4. scanf("%lld", &n);
    5. long long left = 0, right = n; // 最少0根,最多n根
    6. long long result = n;
    7. while (left <= right) {
    8. long long mid = left + (right - left) / 2;
    9. long long totalIceCreams = mid; // 起始购买的冰棍数量
    10. long long sticks = mid; // 吃完后剩下的木棒
    11. // 计算可以吃到多少冰棍
    12. while (sticks >= 3) {
    13. long long newIceCreams = sticks / 3;
    14. totalIceCreams += newIceCreams;
    15. sticks = sticks % 3 + newIceCreams; // 剩下的木棒加上新的木棒
    16. }
    17. if (totalIceCreams >= n) {
    18. result = mid; // 可以满足条件,记录结果
    19. right = mid - 1; // 尝试更少的冰棍
    20. } else {
    21. left = mid + 1; // 需要更多的冰棍
    22. }
    23. }
    24. printf("%lld\n", result);
    25. return 0;
    26. }

  • 相关阅读:
    基于MFC的MVC框架的编程实践
    Java笔记(3)
    游戏业务安全实时计算集群:云原生资源优化实践
    SQL中的不加锁查询 with(nolock)
    【LeetCode】力扣364.周赛题解
    Mbot ros编译环境安装
    Node.js知识点
    Java开发学习(二十八)----拦截器(Interceptor)详细解析
    在Pytorch中保存和加载模型,以及构建自定义图片分类数据集
    深入理解线段树
  • 原文地址:https://blog.csdn.net/zxn275266/article/details/140910925