題目:海灘上有一堆桃子,五隻猴子來分。第一隻猴子把這堆桃子憑據分爲五份,多了一個,這隻猴子把多的一個扔入海中,拿走了一份。第二隻猴子把剩下的桃子又平均分成五份,又多了 一個,它同樣把多的一個扔入海中,拿走了一份,第三、第四、第五隻猴子都是這樣做的,問海灘上原來最少有多少個桃子?
#include <stdio.h>
void main()
{
int i, j, s; //s爲總桃子數,i爲扔了一個
for (i = 5; i <= 10000; i += 5) //最小爲5個,判斷用一個很大值,增加爲5的倍數
{
s = i + 1; //總數 = 扔掉的加上一個
for (j = 0; j <= 5; j++) //五隻猴子
{
if (s % 5 == 1) //分五份,餘1個
s = (s - 1) - (s - 1) / 5; //等式成立,繼續分下去。總數扔掉一個 - 總數扔掉一個分五份
else
break; 等式不成立,直接跳出
}
if (j == 5) //當五隻猴子都分了
{
s = i + 1; //總數 = i 加上扔掉的哪一個
printf ("%d\n", s);
break;
}
}
}