5 个水手在岛上发现了一堆椰子,先有第一个水手把椰子分成等量的 5 堆,还剩了 1 个给了猴子,自己藏起一堆。然后第 2 个水手把剩下的 4 堆混合后重新分为等量的 5 堆,还剩了 1 个给了猴子,自己藏起一堆。以后第三、四个水手依次按此方法处理。最后,第 5 个水手把剩下的椰子分成等量的 5 堆后,同样剩下 1个给了猴子。请用迭代法编程计算并输出原来这堆椰子至少有多少个?
#include<stdio.h>
int yezi(int y)
{
int i;
for(i=1;i<=5;i++)
{
if((y-1)%5!=0)
return 0;
y=(y-1)/5*4;
}
return 1;
}
int main()
{
int i;
for(i=1;;i++)
{
if(yezi(i)==1)
{
printf("%d\n",i);
break;
}
}
}
在上题中,如果第 5 水手分得 255 个椰子,用递归的方法计算原来这堆椰子的个数。
#include <stdio.h>
int yezi(int n)
{
if(n==5)
return 255*5+1;
else
return yezi(n+1)/4*5+1;
}
int main()
{
printf("%d\n",yezi(1));
}