今天在无意中看到了算法爱好者中一道携程出的面试题,觉得很有意思于是写下来分享喽!问题是这样描述的:
一位酒商有6桶葡萄酒和啤酒,容量分别为30升,32升,36升,38升,40升,62升。其中五桶装着葡萄酒,一桶装着啤酒。第一位顾客买走了两桶葡萄酒;第二位顾客所买的葡萄酒则是第一位顾客的两倍。请问,有多少升啤酒?
问题分析:
刚开始看到这道问题我就想既然第二位顾客所买的葡萄酒是第一位顾客的两倍,那仫这五桶葡萄酒是一定卖完的而且五桶葡萄酒的总量一定是3的倍数,所以我将所有酒的总数加起来是30+32+36+38+40+62=238升;而啤酒只有一桶只有当啤酒为40升的时候才满足上述的条件(通过枚举可得),也就是238-40=198升,198正好可以被3整除,同时也可以计算得到第一位顾客所买的两桶葡萄酒分别为30+36=66升,第二位顾客所买的葡萄酒的总量为32+38+62=132升。
其实也可以使用数学中列二元方程的方式解决:假设第一位顾客买了x升葡萄酒,则第二位顾客买了2x升葡萄酒,假设啤酒为y升,则列出如下等式:x+2x+y=238(前面已经计算过酒的总量),则啤酒的数量238-y=3x,则可以分析得到238-y一定是3的倍数,只有当y为40升时才满足题意。
总结:
其实这道面试题是面试官想考应试者的数学功底和随机应变的能力~~~