买矿泉水,空瓶,瓶盖,再兑换矿泉水类问题

编程入门 行业动态 更新时间:2024-10-20 11:49:49

买<a href=https://www.elefans.com/category/jswz/34/1735583.html style=矿泉水,空瓶,瓶盖,再兑换矿泉水类问题"/>

买矿泉水,空瓶,瓶盖,再兑换矿泉水类问题

听到这个,是否有些感触?是否见过这一类的题目?

实际上这种题,并不困难......

看个例题叭:

你有十块钱,矿泉水两块钱一瓶,四个瓶盖换一瓶,两个空瓶换一瓶,你能买多少瓶矿泉水?

没错,短短几句话,实则一道深奥的数学题

这道题有许多解法,“通往罗马的路不止一条”

方程实现:

我们可以通过数学方程来解决这道题:

设使用空瓶兑换到的瓶数为X(整数)

设使用空瓶兑换到的瓶数为Y(整数)

则总瓶数为5+X+Y

可列出二元一次不等式组:

1、 设Y=1,由公式2求出则X={0,1},将X,Y带入公式1,不符合(舍去)

2、 设Y=2,由公式2求出则X={1,2,3,4},将X,Y带入公式1,不符合(舍去)

3、 设Y=3,由公式2求出则X={4,5,6,7},将X,Y带入公式1,求解X=7

所以一共喝了5+X+Y=5+3+7=15(瓶)

看,解决了!!!

但是......若是给你很多钱,或者直接给你原来有好多瓶,例如1000元,100000瓶,这再去列二元一次不等式组显然不太行得通......

所以,这就要用到更高级的算法,运用到C++代码操作

代码实现:

我们可以通过代码来实现计算:

为了程序更灵活,我们可以读入任意金额:

int a; //定义 
cin>>a; //输入有几元钱 
int b=a/2; //空瓶的数量
int c=b; //瓶盖的数量
int sum=b; //记录总共喝了几瓶

表示花光这些钱,可以得到a/2个空瓶,也就有a/2个瓶盖,喝了a/2瓶水,所有的量定义完了之后,我们就要想下面部分了

每次都有可能再兑换到水,这将会直接影响空瓶的数量以及瓶盖都数量

所以,这就要用到while循环

看看题目:四个瓶盖换一瓶,两个空瓶换一瓶

所以,只要b>=2或者c>=4,就会衍生出许多情况,故循环条件就是b>=2或者c>=4,然后再继续循环查看

while(b>=2||c>=4) //只要空瓶>=2或者瓶盖>=4,就可以再换,继续查看情况

继续查看,如果瓶盖大于4个,就会消耗4个瓶盖,再获得一瓶矿泉水,因此产生一个空瓶和一个瓶盖;如果空瓶大于2个,就会消耗2个空瓶,再获得一瓶矿泉水,因此产生一个空瓶和一个瓶盖

if(b>=2) //如果空瓶>=2
{b-=2; //换走两个空瓶sum++; //可以再喝一瓶c+=1; //换来一瓶得到一个瓶盖b+=1; //换来一瓶得到一个空瓶
}
if(c>=4) //如果瓶盖>=2
{c-=4; //换走四个瓶盖sum++; //可以再喝一瓶b+=1; //换来一瓶得到一个空瓶c+=1; //换来一瓶得到一个瓶盖
}

只要走到最后b>=2或者c>=4,意思就是还能换,就会再走一遍,直到两个条件都不成立,不能再换为止

最后只要输出sum,喝了几瓶就行啦

cout<<sum;

 完整代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{int a; //定义 cin>>a; //输入有几元钱 int b=a/2; //空瓶数量int c=b; //瓶盖数量int sum=b; //记录总共喝了几瓶while(b>=2||c>=4) //只要空瓶>=2或者瓶盖>=4,就可以再换 {if(b>=2) //如果空瓶>=2{b-=2; //换走两个空瓶sum++; //可以再喝一瓶c+=1; //换来一瓶得到一个瓶盖b+=1; //换来一瓶得到一个空瓶}if(c>=4) //如果瓶盖>=2{c-=4; //换走四个瓶盖sum++; //可以再喝一瓶b+=1; //换来一瓶得到一个空瓶c+=1; //换来一瓶得到一个瓶盖}}cout<<sum; //输出一共喝了几瓶return 0;
}

运行效果:

这样,这道例题就解决啦(若是直接给的瓶子数量,稍作修改即可,这里就不再赘述)

(当然,这是不存在“借”这个行为,否则另外讨论计算)

简便算法实现:

运用递推迭代算法:

喝的总瓶数m=4*初次瓶数k-5

这里的k再这道题就是b(a/2),即是买光钱所得到的瓶数

这么一看,是不是就特别easy?

至此,这一类问题你已经会做了,还有更多更巧妙的算法,就不再一一说明了

总结:

这是一道相对简单,贴近生活的一道数学逻辑题,运用方程,代码,算法.....都可以实现解答

补充:

其中有一个规律,即最后总会剩下3个瓶盖,1个空瓶

更多推荐

买矿泉水,空瓶,瓶盖,再兑换矿泉水类问题

本文发布于:2024-03-14 04:05:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1735584.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:矿泉水   瓶盖   空瓶

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!