輸入描述:
輸入包括多組測試資料。
每組測試資料報括乙個整數n(1≤n≤20)。
輸入以0結束,該行不做處理。
輸出描述:
每組測試資料對應一行輸出。
包括兩個整數a,b。
分別代表開始時最小需要的桃子數,和結束後老猴子最少能得到的桃子數。
示例1輸入5輸出
3121 1025
解題思路
因為每次分5堆都會多出來1個,所以我們借給猴子們4個,以致每次都可以剛好分成5堆 並且,每次給老猴子的桃
子都不在我們借出的那4個中,這樣最後減掉4就可以得到結果。 假設最初由x個桃子,我們借給猴子4個,則此時
有x+4個, 第乙個猴子得到(x+4)/5,剩餘(x+4)(4/5)個 第二個猴子分完後剩餘(x+4) (4/5)^2個 第三個
猴子分完後剩餘(x+4) (4/5)^3個 依次類推,第n個猴子分完後剩餘(x+4)(4/5)^n 要滿足最後剩餘的為整
數,並且x最小,則當 x+4=5n時,滿足要求;此時,x=5n - 4; 老猴子得到的數量為:x+4)*(4/5)^n + n - 4
= 4^n + n - 4 最後的 +n是因為每個小猴子都會多出乙個給老猴子,-4是還了借的4個
#include
< iostream >
#include
using
namespace std;
intmain()
cout << a <<
" "<< b << endl;
}return0;
}
猴子分桃問題
五隻猴子分桃。半夜,第一只猴子先起來,它把桃分成了相等的五堆,多出乙隻。於是,它吃掉了乙個,拿走了一堆 第二隻猴子起來一看,只有四堆桃。於是把四堆合在一起,分成相等的五堆,又多出乙個。於是,它也吃掉了乙個,拿走了一堆 其他幾隻猴子也都是 這樣分的。問 這堆桃至少有多少個?設桃子總數為s,第一只猴子分...
SDUT 猴子分桃
problem description 老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富 一大堆桃子。老猴子決定把這些桃子分給小猴子。第乙個猴子來了,它把桃子分成五堆,五堆一樣多,但還多出乙個。它把剩下的乙個留給老猴子,自己拿走其中的一堆。第二個猴子來了,它把桃子分成五堆,五堆一樣多,但又多出...
猴子分桃問題
5只猴子分一堆桃子,怎麼也不能分成5等份,只好先去睡覺,準備第二天再分。夜裡1只猴子偷偷爬起來,先吃掉1個桃子,然後將其分成5等份,藏起自己的乙份就去睡覺了 第2只猴子又爬起來,吃掉1個桃子後,也將桃子分成5等分,藏起自己的乙份睡覺去了 以後的3只猴子都先後照此辦理。問最初至少有多少個桃子?倒過來想...