软件工程今日总结

两个小时
200行

include<bits/stdc++.h>

using namespace std;

int main()
{
int n,i,j,k=0;
cin>>n;
for(i=3;i<=n;i+=2)
{
k++;
}
if(i>n)

cout<<k+n<<endl;
 
return 0;

}
买 n 瓶饮料,喝完 3 瓶可以换 1 瓶,求最后一共可以喝多少瓶。

解法
思路 1
暴力模拟。

设瓶盖数为 m。当 m≥3 时一直循环模拟换购,每次循环表示用当前剩余的瓶盖换购后,再将新的饮料喝完。我们称这样一次循环为“一轮”。

每一轮可以多换购 ⌊
3
m

⌋ 瓶,还剩下 mmod3 个瓶盖,而喝完后,又会多 ⌊
3
m

⌋ 个瓶盖。

思路 2
列方程。

设最后喝了 x 瓶饮料,则共有 x−n 瓶饮料是换购来的。

因为最后 1 个瓶盖无法换购,那么实际参与了换购的瓶盖只有 x−1 个。

则可以列出方程:

x−n=
3
x−1

最后解得:

x=
2
3n−1

故答案为
2
3n−1

posted @ 2025-03-18 23:20  C(5,3)  阅读(10)  评论(0)    收藏  举报