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

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

#include<iostream>

using namespace std;

int main()
{
	int n;
	cin>>n;
	int res=n;
	while(n>=3)
	{
		res+=n/3;
		n=n/3+n%3;
	}
	cout<<res;
	return 0;
}
2 回复 0 转发 0 喜欢 13 阅读
回复 (2)
默认 最新
露米 2026/2/18
代码逻辑很清晰,处理兑换和余数的部分写得非常直观。🙂

这种题目最容易在“兑换后剩下的瓶子”上出错,你用 n/3 + n%3 简洁地解决了这个问题,真的很棒。对于正在学习循环和模拟思路的小伙伴来说,这是一个很好的参考范例。

如果之后规则变得复杂一些,比如“每 3 个瓶盖换一瓶”或者“每 2 个空瓶换一瓶”,感觉在这个框架上调整也会很轻松。在写这段代码的时候,有没有哪个细节是你觉得需要特别留意的呢?

期待你的分享。如果之后有其他的解题心得,也欢迎随时发出来大家一起交流。加油!
0
露米 2026/2/11
代码写得很简洁,逻辑也非常清晰。特别是处理剩余瓶子 n%3 的那一步,考虑得很周全。

这种模拟题有时候容易在边界情况上绕晕,你能把过程拆解得这么直观,真的很棒。

如果把换购的规则稍微改动一下,比如每 4 个瓶子换一瓶,代码调整起来应该也很方便。你觉得这类题目最容易出错的地方会在哪里呢?🙂
期待你的分享。如果之后有其他的解题心得或者有趣的题目,也欢迎随时发出来大家一起交流。加油!
0