SDUT 1232 猴子分桃

2021-08-18 01:17:57 字數 1298 閱讀 5956

time limit: 1000 ms memory limit: 65536 kib

problem description

老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富——一大堆桃子。老猴子決定把這些桃子分給小猴子。

第乙個猴子來了,它把桃子分成五堆,五堆一樣多,但還多出乙個。它把剩下的乙個留給老猴子,自己拿走其中的一堆。

第二個猴子來了,它把桃子分成五堆,五堆一樣多,但又多出乙個。它把多出的乙個留給老猴子,自己拿走其中的一堆。

後來的小猴子都如此照辦。最後剩下的桃子全部留給老猴子。

這裡有n只小猴子,請你寫個程式計算一下在開始時至少有多少個桃子,以及最後老猴子最少能得到幾個桃子。

input

輸入包括多組測試資料。

每組測試資料報括乙個整數n(1≤n≤10)。

輸入以0結束,該行不做處理。

output

每組測試資料對應一行輸出。

包括兩個整數a,b。

分別代表開始時最小需要的桃子數,和結束後老猴子最少能得到的桃子數。

sample input

5 1

0sample output

3121 1025

1 1

#include 

using

namespace

std;

int main()

}sum=n+arr[n]/5*4;

cout

<< arr[1] << ' '

<< sum << ' '

<< arr[n]0;

我們首先要保證最後乙個猴子分桃的時候能分配到,我們再去保證前面的猴子分桃能分到。

其次,你要明白乙個概念,到低是誰推誰,這種邏輯不能亂。

1.我們要保證[x]*5/4+1=[x-1],且[x-1]%5==1那麼必須保證[x]是4的倍數,即前面一定是4的倍數才能達到這種效果。

2.其次,我們要保證最後乙個一定可以分配,分配的結果我們不用管,只要保證[x-1]%5==1,所以,如果是這樣的話,x=1,6,11,····(+5)

好,現在我們來理清一下思路,我們需要填充好x[i]的,我們先判斷其上乙個x[i+1]是否符合遞推條件,如果符合,則對x[i]填充;否則,則不填充。

一旦選擇不填充,那麼說明我們開始的數字不符合要求,我們要對其繼續增加直到全部符合相關標準為止。

要用嚴格的數學思維來解題,不能光靠直覺來得出所以然,也不能光靠帶數來嘗試,要靠嚴格的數學證明和嚴謹的邏輯!

SDUT 1232 猴子分桃 逆推

time limit 1000ms memory limit 65536k 有疑問?點這裡 老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富 一大堆桃子。老猴子決定把這些桃子分給小猴子。第乙個猴子來了,它把桃子分成五堆,五堆一樣多,但還多出乙個。它把剩下的乙個留給老猴子,自己拿走其中的一堆。第...

SDUT 猴子分桃

problem description 老猴子辛苦了一輩子,給那群小猴子們留下了一筆巨大的財富 一大堆桃子。老猴子決定把這些桃子分給小猴子。第乙個猴子來了,它把桃子分成五堆,五堆一樣多,但還多出乙個。它把剩下的乙個留給老猴子,自己拿走其中的一堆。第二個猴子來了,它把桃子分成五堆,五堆一樣多,但又多出...

猴子分桃問題

五隻猴子分桃。半夜,第一只猴子先起來,它把桃分成了相等的五堆,多出乙隻。於是,它吃掉了乙個,拿走了一堆 第二隻猴子起來一看,只有四堆桃。於是把四堆合在一起,分成相等的五堆,又多出乙個。於是,它也吃掉了乙個,拿走了一堆 其他幾隻猴子也都是 這樣分的。問 這堆桃至少有多少個?設桃子總數為s,第一只猴子分...