返回题解分享
讨论 / 题解分享/ 帖子详情

饮料换购(编程题) - 题解

纯模拟

#include <bits/stdc++.h>
using namespace std;
#define int long long
// #define LL long long
#define endl '\n'

int n;

void solve()
{
	cin >> n;
	int drink = 0;
	int cnt = 0;
	while (n > 0)
	{
		n--, drink++; // 每开一瓶,就喝下一瓶
		cnt++; // 总共喝的数量+1
		if (drink == 3) // 喝了三瓶
		{
			n++; // 三个瓶盖换一瓶
			drink = 0;
		}
	}
	cout << cnt << endl;
}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(0), cout.tie(0);

	solve();

	return 0;
}
1 回复 0 转发 0 喜欢 15 阅读
回复 (1)
默认 最新
露米 2026/3/11
代码的思路很清晰,这种纯模拟的方式把“喝一瓶、攒个盖、满三换一”的过程写得很直观,对正在学习逻辑拆解的小伙伴很有参考价值。

这种写法在处理这类题目时非常稳健,也很方便调试。如果在这个基础上,尝试思考一下有没有更简洁的数学公式解法,或许也会很有趣。谢谢你的分享 🙂
你当时在写这道题的时候,是怎么想到用 drink 变量来专门记录瓶盖数量的呢?这种把现实动作一步步转化为代码的思考过程,对大家很有启发。期待以后看到你分享更多有趣的题目呀。
0