请给个算法

话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子!大家把椰子全部采摘下来放在一起,但是天... 话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子!大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先.
晚上某个家伙悄悄的起床,悄悄的将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄悄的藏了一份,然后把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.
过了会儿,另一个家伙也悄悄的起床,悄悄的将剩下的椰子分成5份,结果发现多一个椰子,顺手就又给了幸运的猴子,然后又悄悄滴藏了一份,把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.
又过了一会 ......
又过了一会 ...
总之5个家伙都起床过,都做了一样的事情。早上大家都起床,各自心怀鬼胎的分椰子了,这个猴子还真不是一般的幸运,因为这次把椰子分成5分后居然还是多一个椰子,只好又给它了.问题来了,这堆椰子最少有多少个?
展开
 我来答
百度网友303b813
2010-11-29 · TA获得超过1749个赞
知道小有建树答主
回答量:438
采纳率:0%
帮助的人:533万
展开全部
我看过一道相同的题 题目答案如下:

5只猴子一起摘了一堆桃子,因为太累了,它们商量决定,先睡一觉再分。

过了不知多久,来了一只猴子,它见别的猴子没来,便将这一堆桃子来均分成5份,结果多了一个,就将多的这个吃了,拿走其中一堆。又过了不知多久,第2只猴子来了,它不知道有1个同伴已经来过,还以为自己是第一个到的呢,于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中1堆。第3只,第4只,第5只猴子都是这样……问这5只猴子至少摘了多少个桃子?第5个猴子走后还剩多少个桃子?

方法一:
设:原有桃子x个,最后剩下y个。那么,每一只猴子连吃带拿,得到了多少桃子呢?
第一只猴子吃了1个,又拿走了(x-1)个的 ,一共得到 (x-1)+1个。它走了,这里留下的桃子,还有x-[ (x-1)+1]个,也就是 [ (x-1)-1],也就是又从原数中减1,乘 。
现在,我们找到解题的思路了:每来一只猴子,桃子的数目就来个变化--减1,乘 。
当第五只猴子来过后,我们已对x进行5次这样的减1,乘 了。
这样5次之后,便得到y。所以,--
y= { [ [ [ (x-1)-1]-1]-1]-1}.
一步一步整理,应当得到
y= (x+4)-4
也就是
y+4= (x+4)=( )5×(x+4)。
从这个式时,我们不能断定x和y是多少。不过,因为x和y都是正整数,而45和55的公约数是1,所以,(x+4)一定可以被55整除。
这样,我们就可以算出x至少是55-4=3121,而y至少是55-4=1040。

方法二:

现在,让5只猴子再分一次。
桃子虽然多了4个,可是第一只猴子并没有从中捞到便宜。因为这时桃子正好可以均分成5堆,它拿到的1堆,恰好等于刚才你没有借给它们4个桃子时,它连吃带拿的数目。
这样,当第二只猴子来时,桃子的数目,还是比你没借给它们时多了4个,又正好均分成5堆。所以,第二只猴子得到的桃子,也不多不少,和原来连吃带拿一样多。
第三、第四、第五只猴子到来时,情况也是这样。
5只猴子,第一个都恰好拿走当时桃子总数的 ,剩下 ;而开始的时候,桃子的数目是x+4(加上你借给它们的4个)。这样到了最后,便剩下 (x+4)个桃子,这比剩下的y个多元化个。所以得到:
y+4=( )5×(x+4)
和刚才的结论一样。
富港检测技术(东莞)有限公司_
2024-06-06 广告
ISTA3L是一个基于研究、数据驱动的测试协议,它模拟了由零售公司完成的产品订单被直接运送给消费者时所经历的危险,它允许用户评估包装产品的能力,以承受运输和处理包装产品时所经历的供应链危险,从接收到任何电子商务零售商履行操作,直到最终消费者... 点击进入详情页
本回答由富港检测技术(东莞)有限公司_提供
bianmizhiwang
2010-11-29 · 超过28用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:84.6万
展开全部
这个算法··· 搞清楚了 也很蛋痒啊· 不想蛋痒
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
980515024
2010-11-29 · TA获得超过606个赞
知道小有建树答主
回答量:700
采纳率:0%
帮助的人:324万
展开全部
呵呵……是挺有趣的!
既然来了我给点建议吧!
这个算法肯定会用到循环,而循环的条件就应该是i<=5(起床次数);这个应该没有错!剩下就是循环体了,它要求的是最少, 就按最少算就可以了!剩下的自己想吧!呵呵……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鷹弈
2010-11-29 · TA获得超过5194个赞
知道大有可为答主
回答量:1257
采纳率:0%
帮助的人:619万
展开全部
这道题其实已经把算法告诉你了

意思就是,每次分椰子的时候,椰子数总能被5整除且余1

只要用循环语句把它描述出来即可

源代码如下:

方法一:

#include <stdio.h>

void main(void)
{
int i,j;
int sum;
int tmp;

for (i=1; ; i++)
{
sum = 5 * i + 1; //假设椰子总数(由小到大试探,控制最小总数)

for (j=1; j<=5 ; j++)
{
if (((sum - 1) % 5 ) == 0) //判断能否被5整除
{
sum = 4 * (sum - 1) / 5; //逐次减小
}
else
{
break;
}
}

if (j == 6) //说明5次分椰子的过程均能被5整除余1,保存i值,退出外循环
{
tmp = i;
break;
}
}

sum = 5 * i +1;

printf("sum = %d\n", sum);

return;
}

方法二:

#include <stdio.h>

void main(void)
{
int i,j;
int sum;

for (i=1; ; i++)
{
sum = 5 * i + 1; //假设最后一个人分椰子的数量

for (j=2; j<=5 ; j++) //循环四次,逐次增大
{
sum = 5 * sum / 4 + 1;

if (((sum - 1) % 5) == 0)
{
continue;
}
else
{
break;
}
}

if (j == 6) //说明前4次分椰子的过程均能被5整除余1,退出外循环
{
break;
}
}

printf("sum = %d\n", sum);

return;
}

如果对你有所帮助,请记得采纳最佳答案,谢谢!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
犹悦沅Ql
2010-11-29 · TA获得超过525个赞
知道小有建树答主
回答量:476
采纳率:0%
帮助的人:174万
展开全部
借4个椰子给海盗,你会发现,椰子总数能被 5*5*5*5*5 整除

所以最少有 5*5*5*5*5-4 = 3121
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式