水手分椰子问题。五个水手发现了一堆椰子,第一个水手把椰子分成5等分,多出一个给了猴子自己藏起了一堆;第二个水手把剩下的椰子混合再分,又分为5等分,多出1个给了猴子,自己藏起1堆,第三,四个水手也同样来分第五个水手把椰子分为5等分后,正好多出1个给猴子,问这堆椰子有多少个?
分析:设某个水手面临N个椰子,则他前一个水手面临的则为5×N/4+1,以此类推,若某个整数M经上述5次迭代都是整数,则为最后的所求结果。
程序如下
main()
{int n, k; float m; n=1;
m=5×n+1; k=1;
while(k<=5)
{if(m!=(int)m)
{n++;
m=5×n/4+1;
n=1;
}
else k=k+1;
}
Printf(“m=%d\n”,(int)m);
}
老师,这个程序我不会解读,加线处是怎么回事?
设:天亮后5个水手每人分X个
则:这次分配之前椰子数:5X+1=A
第5个水手分椰子前椰子数:(A/4)*5+1=B
第4个水手分椰子前椰子数:(B/4)*5+1=C
第3个水手分椰子前椰子数:(C/4)*5+1=D
第2个水手分椰子前椰子数:(D/4)*5+1=E
第1个水手分椰子前椰子数:(E/4)*5+1=F
X为正整数X<10000 范围有 x=1023,2047,3071,4095,5119,6143,7167,8191,9215满足条件。
对应椰子总数:
15621,31246,46871,62496,78121,93746,109371,124996,140621
满足条件的最少椰子总数为15621个
你发给我的程序有问题,我查到了几种解法,但我感觉都有问题,目前还没有找到合适的方法。
水手分椰子问题 来自淘豆网m.daumloan.com转载请标明出处.