#温馨提示:此文章使用的是MD编辑器,在小程序上查看可能会出现乱码,敬请谅解
【题目链接】P8627 [蓝桥杯 2015 省 A] 饮料换购
本题是一道比较简单的模拟题。假设有
n
n
n 个瓶盖,当
n
≤
3
n \leq 3
n≤3 时可以一直循环换购,每次循环用剩余的瓶盖换购后,再将新的饮料喝完。
每一轮循环中,我们可以多换购
m
3
\displaystyle \frac{m}{3}
3m 瓶,还剩下
m
m
o
d
3
m\bmod3
mmod3 个瓶盖,而喝完后,又会多
m
3
\displaystyle \frac{m}{3}
3m 个瓶盖。
这样就可以轻松的完成本题了。
AC代码如下
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n; // 输入购买的饮料数量
int sum = n; // 将已获得的饮料总数赋值为初始购买数量
while (n >= 3) { // 当剩余饮料数量大于等于3时,可以进行兑换
sum += n / 3; // 将能够兑换的饮料数量累加到总数量中
n = n % 3 + n / 3; // 更新剩余的饮料数量为剩下的瓶盖数(n%3)加上兑换后得到的新饮料数(n/3)
}
cout << sum; // 输出最终总共喝到的饮料数
return 0;
}