结果:最少3121个桃子。
主要问题在于: 第五只猴子手上此时拿到的最少的桃子数量如何确定;
思路: 1 这里存在一个前提,第五只猴子手里所有桃子,以此向前推,要求前面的桃子一定要是整数,这样看很明显第五只猴子手里6个桃子不合理; 2 每一只猴子手上桃子总数是前一只猴子分好五份中的其中四分,也就是仅仅占4/5, 同时前一只还扔掉一个桃子; 3 定义一个初始值,定义为最小一份的桃子数 x ; 4 题上仅五只猴子,所以需要向前推四次,并且每次前推获得的数值一定为整数(这很重要); 5 每次前推为整数,就将前一只猴子所分的一份赋值给 x ; 6 循环出来判断,是否成功赋值 4 次. 不是: 就将sum++,重新循环; 是,此时赋值得到的 x 值就是最初的桃子中的一份,所以 x * 5 + 1 即可; 7 只有当前推四次均为整数时,那么得到的最终数值,即为结果. 代码如下:
public int getCount() { int sum = 1, x; while (true) { int i = 0; x = sum; for (i = 0; i < 4; i++) { if ((x * 5 + 1) % 4 == 0) { x = (x * 5 + 1) / 4; } else { break; } } if (i != 4) { sum++; } else { return (x * 5 + 1); } } } public static void main(String[] args) { System.out.println("海滩上原来的桃子数量为: " + new InitPeach().getCount()); }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)