[蓝桥杯 2015 省 A] 饮料换购
题目描述
乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊 C 型饮料,凭 3 3 3 个瓶盖可以再换一瓶 C 型饮料,并且可以一直循环下去(但不允许暂借或赊账)。
请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的 n n n 瓶饮料,最后他一共能喝到多少瓶饮料。
输入格式
一个整数 n n n,表示开始购买的饮料数量。( 0 < n < 10000 0<n<10000 0<n<10000)
输出格式
一个整数,表示实际得到的饮料数。
样例 #1
样例输入 #1
100
样例输出 #1
149
样例 #2
样例输入 #2
101
样例输出 #2
151
提示
2015 年蓝桥杯省赛 A 组 H 题。
思路
定义两个变量n
和ans
,其中n
用来存储输入的饮料数量,ans
用来存储最后得到的饮料数量。
接下来,从输入中读取饮料的数量,并将其存储在n
中。然后定义一个循环,循环条件是当前的饮料数量大于等于3,因为只有当饮料数量大于等于3时,才能通过换购得到新的饮料。在循环体中,每次都将ans
增加3,表示换购得到3瓶新的饮料,然后将i
减去2,表示消耗了2个瓶盖。
当循环结束后,如果i
的值仍然大于0,那么将i
的值加到ans
中,表示还有剩余的饮料。
最后,输出ans
的值,表示最后得到的饮料数量。
AC代码
#include <algorithm>
#include <iostream>
#define mp make_pair
#define AUTHOR "HEX9CF"
using namespace std;
using ll = long long;
const int N = 1e6 + 7;
const int INF = 0x3f3f3f3f;
const ll MOD = 1e9 + 7;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
ll ans = 0;
cin >> n;
int i = n;
while (i >= 3) {
ans += 3;
i -= 2;
}
ans += i;
cout << ans << "\n";
return 0;
}