猴子分桃
猴子分桃
Description
老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富——一大堆桃子。老猴子決定把這些桃子分給小猴子。
第一個猴子來了,它把桃子分成五堆,五堆一樣多。但還多出一個。
它把剩下的一個留給老猴子,自己拿走當中的一堆。
第一個猴子來了,它把桃子分成五堆。五堆一樣多。但又多出一個。
它把多出的一個留給老猴子,自己拿走當中的一堆。
后來的小猴子都如此照辦。最后剩下的桃子所有留給老猴子。
這里有n僅僅小猴子,請你寫個程序計算一下在開始時至少有多少個桃子,以及最后老猴子最少能得到幾個桃子。
Input
輸入包含多組測試數據。
每組測試數據包含一個整數n(1≤n≤20)。
輸入以0結束,該行不做處理。
Output
每組測試數據相應一行輸出。
包含兩個整數a,b。
分別代表開始時最小須要的桃子數,和結束后老猴子最少能得到的桃子數。
Sample Input
| Original | Transformed |
5 1 0
Sample Output
| Original | Transformed |
3121 1025 1 1
#include<stdio.h> int main() { int n; while (scanf("%d", &n),n) //輸入一個數,假設n!=0就循環; { int i; long long zong=1; for (i=1; i<=n; i++) //桃子數為zong-4; zong*=5; long long hou=zong; for (i=1; i<=n; i++) //老猴子得到的桃子數為hou+n-4; hou=hou/5*4; printf("%lld %lld ", zong-4, hou+n-4); } return 0; }解說:首先令老猴一共同擁有X個桃,第一個猴拿后,還剩 4/5X-4/5;第二個拿后。還剩16/25X-16/25-4/5;多列幾個。可得第n個猴拿后還剩4^n/5^nX-(4^n/5^n+···+4/5);整理可得m=(4/5)^n(X+4)-4;由于在每一個4/5過程中都要能整除。所以X最小滿足5^n-4 ;老猴可得桃數是m+n;
總結
- 上一篇: python——获取数据类型
- 下一篇: org.apache.maven.arc