解题思路:
  首先仔细阅读题目可以得知在拥有一定瓶子数的情况下,每当有三个瓶子就可以换一瓶汽水,所以第一个能想到的是用瓶子数取3的整除得到换取的汽水数,那么将其喝掉后会得到新的瓶子,只需与原来被剩下的瓶子加在一起就又回到了最初的这个问题结构上,因此这个过程就可以用循环来实现,循环的条件就是瓶子数>=3,那么在循环结束后瓶子数最多是2, 此时根据题目中的描述是可以借汽水的,但是如果瓶子数不是2的话借了的汽水是还不了了,所以只有当瓶子数为2时才需要借一瓶汽水。

参考代码:

#include <stdio.h>

#include <stdlib.h>

int he_qi_shui(int n){

    int sum = n / 3, x = n / 3 + n % 3;  //定义总的数量,及当前的空瓶数

    while (x >= 3){

        sum += x / 3;  //又换了若干瓶

        x = x / 3 + x % 3;  //更新当前的总瓶数

    }

    if (x == 2){

        sum++;

    }

    return sum;

}

int main( )

{

    int count = 0;  //输入次数

    int n;

    scanf("%d", &n);

    count++;

    while (count <= 10 && n != 0){

        printf("%d\n", he_qi_shui(n));

        scanf("%d", &n);

        count++;   //次数加1

    }

    return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论