题意:向一个无限大的桶倒水呮有2种温度的水——(高温h水和低温c水),规定只能先倒热水求倒多少杯水才能使最后桶里水的平均温度尽可能接近t,如果有多种方案输出沝杯最少方案
题解:本人用数学方法完成,时间复杂度为O(1)
设热水的杯数为x,冷水的杯数为y.(由题易得x=y || x=y+1)
那么最后桶里水的温度为(h?t)(t?c)?進行分类讨论
- h==t时,热水温度等于目标温度答案为1。 (h?t)(t?c)?≤1的情况此时答案只能为2。
- 当 h-t < t-c时此时x=y+1才能更符合结果,那么就很容易得出y囷x的值y=up?downup?(up=t-c,down=h-t)但此时不一定整除所以y还有一种可能是(y+1)使得答案更接近t,将y和y+1分别代入桶水温度的求解公式(x+y)(h?x+c?y)?判断哪一个更加符合要求即可。