问题描述:n个水手来到一个岛上,采了一堆椰子后,因为疲劳都睡着了。第一个水手醒来,悄悄地将椰子等分成n份,多出一个椰子,便给了旁边的猴子,然后自己藏起一份,再将剩下的椰子重新合在一起,继续睡觉。第三第四个水手采取一样的策略,第n个水手醒来,便把剩下的椰子分成n份,恰好又多出一个,给了猴子。请问水手最初最少摘了多少个椰子。
代码实现
#include<stdio.h>
int main()
{
double hand(int n);
int n;
while(scanf("%d",&n)!=EOF){
printf("%.0f\n",hand(n));
}
return 0;
}
double hand(int n)
{
double k,y;
double ans;
int i=1;
k=1.0;
y=k;
while(i<=n){
i++;
y=((n-1)*y-1)/n;
if(y!=(int)y){
k++;
y=k;
i=1;
}
}
ans=n*k+1;
return ans;
}