题目描述
老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。
第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。
第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。
后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。
这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。
eg:
输入:
5
1
0
输出:
3121 1025
1 1
以下是本篇文章正文内容,下面案例可供参考
解题思路
此题考察数学分析
分完剩余的桃子数
如果有n个猴子,设每次开始时有Xi个桃子,每次分5堆,剩1个。
如果最开始的时候借4个桃子,那么,每次都可以平分5堆
则每次要分的桃子就是Xi+4个
即:
Xi—>代表第i个猴子拿的桃子数
Xi+4—>代表要分的桃子个数
(Xi+4)*(4/5)—>代表分完剩余的桃子数
第i次分 | 要分的桃子个数 | 分完剩余的桃子数 |
---|---|---|
1 | X1+4 | (X1+4)*(4/5) |
2 | X2+4 | (X2+4)*(4/5) |
3 | X3+4 | (X3+4)*(4/5) |
… | … | … |
由题意可知:第一次分完剩的桃子数 = 第二次要分的桃子个数
则:
X2+4 = (X1+4) * (4/5)
X3+4 = (X2+4) * (4/5) = (X1+4) * (4/5) * (4/5)
X4+4 = (X3+4) * (4/5) = (X2+4) * (4/5) * (4/5) = (X1+4) * (4/5)3
……
即(Xi+4)*(4/5)n—>代表第n次分完剩余的桃子数
因为剩余的桃子数为整数,则Xi+4 = 5n,X1 = 5n - 4
老猴子获得的桃子数
1~n个猴子分完桃子后给老猴子1个,共n个
剩余(X1+4)* (4/5)n个,且需要满足X1最小为1,即为4n
再减去最开始借的4个
则老猴子获得的为n + 4n - 4
代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int n = sc.nextInt();
if (n==0) break;
long a = (long)(Math.pow(5,n)-4);//分完剩余的桃子数
long b = (long)(Math.pow(4,n)+n-4);//老猴子获得的桃子数
System.out.println(a+" "+b);
}
}
}