(2015)第六届蓝桥杯省赛(软件类) C/C++ 大学A组 题解(第八题)

时间:2022-09-09 21:38:32

第八题

题目

饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。

输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数


例如:
用户输入:
100
程序应该输出:
149

用户输入:
101
程序应该输出:
151

资源约定:
峰值内存消耗 < 256M
CPU消耗  < 1000ms


请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。


注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。


提交时,注意选择所期望的编译器类型。

思路分析

     简单的递归。

用例及测试结果

    (2015)第六届蓝桥杯省赛(软件类) C/C++ 大学A组 题解(第八题)

代码

#include <iostream>

using namespace std;

int cal(int n){
	int h = n, g = n; //h表示喝了的数量,g表示当前瓶盖数量
    while(g >= 3) {
        h += g / 3;
        g = g/3 + g % 3;
    }
    return h;
}
int main(int argc, char** argv) {
	int n;
	while(scanf("%d",&n)==1){
		int ans=cal(n);
		printf("%d",ans);
	}
	return 0;
}