0
点赞
收藏
分享

微信扫一扫

[ 第六届蓝桥杯省赛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;
}


举报

相关推荐

0 条评论