一道华为简单算法题记录-汽水瓶

一道华为简单算法题记录-汽水瓶

背景

今天公司同事提到了面试一位新人的时候提出的华为的一道题,感觉有点意思,记录下吧。
假设一瓶汽水售价1元,3个瓶盖可以换一瓶汽水,2个瓶子可以换一瓶汽水,问20元可以喝多少汽水。

解法描述

看到这个题目,最直接的做法,就是写个程序,模拟买汽水-换汽水的过程,直到剩余的瓶盖或者瓶体买不到汽水。

然而这样写似乎有点太麻烦了,依稀记得这种换汽水问题是小学的必考题,直到初中学了方程才学会智能的解法。小学时我们经常会遇到这样的问题,汽水1元,2个瓶子可以换一瓶汽水,10元能喝到多少瓶汽水。然后就可以在纸上模拟整个过程了,答案是20瓶。这种题技巧是如果最后只剩下一个空瓶子的时候要向老板借一瓶,然后凑2个瓶子换一瓶汽水,再把最后的2个瓶子还给老板。

到了初中,我们学会了列方程解决问题。就换了一种思路,不再一步步推算了。其实从题目描述来看,瓶子和汽水都是有价值的,而作为消费者我们的目的是为了喝汽水,所以为了喝到最多的汽水,我们要把所有的钱都换成汽水。
设汽水的价值是x,汽水瓶子的价值是y。
则有
{ x + y = 1 2 y = x + y \left\{ \begin{array}{lr} x + y = 1 \\ 2y= x + y \end{array} \right. { x+y=12y=x+y
从而解得
x = 1 2 y = 1 2 \begin{array}{lr} x = \dfrac{1}{2}\\ y = \dfrac{1}{2} \end{array} x=21y=21
所以能喝到的汽水是

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值