题目描述
某饮料公司最近推出了一个“空瓶换饮料”的活动:如果你拥有3个空瓶就可以兑换一瓶饮料,初始你有 n 瓶饮料,喝完后的空瓶可以继续用来兑换饮料。问总共可以喝到多少瓶饮料。
输入格式
一行,1个整数n,表示初始饮料的数量(1 <= n <= 10^9)。
输出格式
一行,对应答案
输入样例
10
输出样例
14
数据范围
无
解题思路
用 while 循环模拟兑换过程,同时用个变量 sum 做喝过饮料的计数,用一个 t 做剩余瓶盖的计数。
初始 sum=n ,表示喝了最初的 n 瓶。
之后 t=n ,即当前 n 个瓶盖经过兑换,剩余的瓶盖。
n=n/3 ,即当前 n 个瓶盖可以兑换多少瓶饮料。
再下一轮兑换时,先进行计数,即 sum=sum+n ,再把剩余的 t 个瓶盖,加到 n 当中,模拟兑换过程。
直到 n 等于 0 为止。
Code
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, sum = 0, t = 0;
cin >> n;
while(n > 0) {
sum += n;
n += t;
t = n % 3;
n /= 3;
}
cout << sum;
return 0;
}