- 五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;.....其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?
析:设f(n)为第n次分后每堆的数量。
则f(n+1) = (4*f(n)-1)/5;(1<=n<=4)即:f(n)=(5*f(n+1)+1)/4;总数量S=5*f(1)+1;
Java程序如下:
public static void f(){ for(float i = 1.0f;i < 10000;i++){ float tmp = i; boolean flag = true; int k = 0; //此时的tmp表示第4次分堆后每堆的个数。 while(flag && k<4){ tmp = (5*tmp+1)/4; if(tmp % 1 != 0){ flag = false; } k++; } if(flag){ //此时的tmp表示第1次分堆后每堆的个数。 System.out.println("总的桃子数可以为:"+ (5*tmp+1)); } }}输出结果如下:继续阅读与本文标签相同的文章
上一篇 :
由rand_a()实现rand_b()
下一篇 :
设计模式
-
abstract 的方法是否可同时是 synchronized ?
2026-06-02栏目: 教程
-
JNI入门
2026-06-02栏目: 教程
-
abstract 的 method是否可同时是 native的?
2026-06-02栏目: 教程
-
abstract class 和 interface 的区别
2026-06-02栏目: 教程
-
面向对象设计语言的显著特征
2026-06-02栏目: 教程
