原题链接:https://www.luogu.com.cn/problem/P8627
1. 题目描述
2. 思路分析
小伙伴们可以看看这篇文章~
https://blog.csdn.net/m0_62531913/article/details/132385341?spm=1001.2014.3001.5501
我们这里主要讲下方法二的推导过程:
列方程。
设最后喝了x瓶饮料,则共有x-n瓶饮料是换购来的。因为最后1个瓶盖无法换购,那么实际参与了换购的瓶盖只有x-1个。
则可以列出方程:x-n=(x-1)/3
最后解得:x=(3*n-1)/2;
故答案为:(3*n-1)/2
3. 代码实现
3.1 方法一
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int empty = n;
int total = n;
while (empty>=3)
{
total += empty / 3;
empty = empty / 3 + empty % 3;
}
cout << total << endl;
return 0;
}
3.2 方法二
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
cout<<(3*n-1)/2;
return 0;
}
3.3 方法三
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int empty = 0;
while (n)
{
n--;
empty++;
if (empty % 3 == 0)
empty++;
}
cout << empty << endl;
}