来源: 第六届蓝桥杯省赛C++A组
算法标签:数学
题目介绍
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n 瓶饮料,最后他一共能喝到多少瓶饮料。
输入格式
输入一个整数 n,表示初始买入的饮料数量。
输出格式
输出一个整数,表示一共能够喝到的饮料数量。
数据范围
0<n<10000
输入样例:
100
输出样例:
149
思路
有题可知凭3个瓶盖可以再换一瓶C型饮料
,我们用样例一模拟一下。
模拟整个喝饮料过程:
100:n,33:n/3,1:n%3
34 :n 11:n/3,1:n%3
12 :n 4 :n/3,0:n%3
4 :n 1 :n/3,1:n%3
2 :n NULL
循环操作到n<3终止。
我们可以发现:瓶盖数量等于瓶盖/3下取整+瓶盖%3
只要我们每次得到的瓶子数量再加上多余的数量,然后带入到下一次直到n<3退出即可,答案即为每次兑换的瓶子数量之和。
C++ 代码
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int res=n;//起码已经喝到了n瓶
while(n>=3)
{
res+=n/3,n=n/3+n%3;//更新数量
}
cout<<res;
return 0;
}