蓝桥杯 — 饮料换购(乐羊羊饮料厂正在举办一次促销优惠活动)

探讨了在乐羊羊饮料厂举办的饮料换购活动中,如何通过最优的换购策略,使得初始购买的饮料数量最大化地转化为实际消费的饮料数量。通过循环利用瓶盖进行换购,最终计算出实际得到的饮料总数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求如下:


饮料换购

乐羊羊饮料厂正在举办一次促销优惠活动。乐羊羊C型饮料,凭3个瓶盖可以再换一瓶C型饮料,并且可以一直循环下去(但不允许暂借或赊账)。

请你计算一下,如果小明不浪费瓶盖,尽量地参加活动,那么,对于他初始买入的n瓶饮料,最后他一共能喝到多少瓶饮料。

输入:一个整数n,表示开始购买的饮料数量(0<n<10000)
输出:一个整数,表示实际得到的饮料数

例如:
用户输入:
100
程序应该输出:
149

用户输入:
101
程序应该输出:
151

资源约定:
峰值内存消耗 < 256M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

思路:

  1. 加入小明现有N瓶饮料,则首先小明喝了N瓶饮料。然后剩下N个瓶盖,每三个瓶盖可以换取一瓶饮料,所以小明又喝了N/3瓶饮料。
  2. 照此循环,一直到瓶盖的个数小于3,不能再换取饮料为止,统计下小明喝了饮料的个数即可。


源代码如下:

#include<iostream>
#include <process.h>
using namespace std;
int main()  
{  
   int n;
   int drinked=0;	//记录小明喝了多少瓶饮料。 
   int bottleCap;	//记录目前有多少瓶盖。 
   int temp=0;
   cin>>n;
   
   drinked=n;
   bottleCap=n; 
   while(bottleCap >=3)
   {
   		temp=bottleCap/3;
   		drinked=drinked+temp;
   		bottleCap=bottleCap%3+temp;
   }
   
   cout<<drinked<<endl;     
   system("pause"); 
} 

运行截图如下:

输入100时的结果:


输入101时的结果:



注:由于蓝桥杯的官网上面没有收录这道题,所以不知道本程序的内存和空间是否满足要求,总之程序肯定是越简单明了越好的。




评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值