饮料换购
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。
输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数
例如:
用户输入:100 33*3+1 34
100
程序应该输出:
149
用户输入:
101
程序应该输出:
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。
输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数
例如:
用户输入:100 33*3+1 34
100
程序应该输出:
149
用户输入:
101
程序应该输出:
151
代码如下
#include<stdio.h>
int tot;
void dfs(int n)
{
if(n<3) return;//当剩下瓶盖数小于3时,递归结束
int a=n/3;//手中瓶盖可
int b=n%3;//换完饮料剩下瓶盖数
tot+=a;
dfs(a+b);//最后剩下瓶盖数即为a(换的饮料数)+b(换完饮料剩下瓶盖数)
}
int main()
{
scanf("%d",&tot);
dfs(tot);
printf("%d\n",tot);
return 0;
}