【说明】
该面试题主要考察面试者的思维逻辑,在解答该题的过程中是否可以发现其规律,并完成编码。
【解题思路】
1、先将小杯子接满水;
1、将小杯子的水往大杯子里倒;
2、当大杯子里的水满后,将大杯子的水倒出,然后继续将水从小杯子里面倒一直重复,只到小杯子里的水是四升时再停止。
【流程示意图】
【倒水结果图(红色表示给小杯子接水)】
从上图可以发小规律,其实就是一直观察小杯子里剩余的水量,用编程思想来说就是一只对小杯子里的水进行取余,当余数为4时就求出了需要多少次。还有一个规律就是每次的余数其实就是等于
(小杯子水接水的次数)%大杯子的水=(5*i)%7
【代码演示】
public class Demo1 {
public static void main(String[] args) {
int cup1 = 7;//7升的杯子
int cup2 = 5;//5升的杯子
int target = 4;//目标剩余水量
int count = 0;
while (true) {
count++;
int result = (cup2 * count) % cup1;
if (result == target) {
System.out.println("倒水第"+count+"次的时候,5升杯子里的水是"+target);
return;
}
}
}
}