标题:看一下这道题我的思路对么?
只看楼主
fedcab123
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:100
注 册:2011-9-3
结帖率:100%
 问题点数:0 回复次数:18 
看一下这道题我的思路对么?
话说某天一艘海盗船被天下砸下来的一头牛给击中了,5个倒霉的家伙只好逃难到一个孤岛,发现岛上孤零零的,幸好有有棵椰子树,还有一只猴子!大家把椰子全部采摘下来放在一起,但是天已经很晚了,所以就睡觉先.

晚上某个家伙悄悄的起床,悄悄的将椰子分成5份,结果发现多一个椰子,顺手就给了幸运的猴子,然后又悄悄的藏了一份,然后把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.

过了会儿,另一个家伙也悄悄的起床,悄悄的将剩下的椰子分成5份,结果发现多一个椰子,顺手就又给了幸运的猴子,然后又悄悄滴藏了一份,把剩下的椰子混在一起放回原处,最后还是悄悄滴回去睡觉了.

又过了一会 ......

又过了一会 ...

总之5个家伙都起床过,都做了一样的事情。早上大家都起床,各自心怀鬼胎的分椰子了,这个猴子还真不是一般的幸运,因为这次把椰子分成5分后居然还是多一个椰子,只好又给它了.问题来了,这堆椰子最少有多少个?


S1:设最后一次分椰子数为x
S2:x能为4整除,(x-1)能为5整除
S3:在数为X前一共分了5次,设次数为i
S4:循环S2、S3对么?
搜索更多相关主题的帖子: 椰子树 海盗船 天下 幸运 
2011-09-13 11:33
edwardflee
Rank: 4
等 级:业余侠客
帖 子:145
专家分:234
注 册:2011-7-27
得分:0 
我的思路是设全部椰子数为x,则x除以5余1(这个条件需满足6次)每个海盗分给猴子一个,有自己留下5份中的一份之后,x变为(x-1)/5*4。
然后用i做循环,从1开始一直找到满足条件的最小值。
不过这个数我算出来有点恐怖,15621,这帮海盗数起数来还真有耐心,哈哈
程序代码:
# include <stdio.h>

int main(void)
{
    int x;
    int n;
    int i=0;
   
    while(++i)
    {
        n = 0;
        x = i;
        while(x%5 == 1)
        {
            ++n;
            x = (x-1)/5*4;
        }
        if(n==6)
            break;
    }
    printf("%d\n",i);

    return 0;
}


学C的秘诀=每天都来泡论坛
2011-09-13 14:12
a5952036
Rank: 2
等 级:论坛游民
帖 子:65
专家分:94
注 册:2011-9-7
得分:0 
那个无聊出这么变态的问题
2011-09-13 14:44
fedcab123
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:100
注 册:2011-9-3
得分:0 
在网上看的,就想起C语言了,不过我只有思想,但是不会编,……
2011-09-13 16:09
yucwei
Rank: 2
等 级:论坛游民
帖 子:25
专家分:46
注 册:2007-10-10
得分:0 
最后一次分,每个人分几个呀?
2011-09-13 17:07
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
程序代码:
#include <stdio.h>
bool fun(int i,int depth)
{
    if(depth == 5)
        return true;
    if((i-1)%5 || i<=0)
        return false;
    if(fun((i-1)-(i-1)/5,depth+1))
        return true;
}
//3121 2496 1996 1596 1276 1021
int main(void)
{
    int i,j,k;
    for(i = 1;;i++)
    {
        if(fun(i,0))
        {
            printf("%d\n",i);
            break;
        }
    }
    return 0;
}
我的答案是3121  可以验证一下注册数据

[ 本帖最后由 laoyang103 于 2011-9-13 20:18 编辑 ]

                                         
===========深入<----------------->浅出============
2011-09-13 18:00
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
得分:0 
回复 楼主 fedcab123
刚找到点错误,改下

[ 本帖最后由 A13433758072 于 2011-9-13 20:02 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-13 19:46
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
回复 7楼 A13433758072
最后一次不可能是6个  如果是6个那么应该是有个整数满足这个式子

6 = x - (x-1)/5 - 1 这个式子的解为x = 34/4

                                         
===========深入<----------------->浅出============
2011-09-13 19:52
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
得分:0 
程序代码:
#include <stdio.h>
int fun(int n)
{
    int k=6;
    while(k)
    {
        if((n-1)%5)
            break;
        else
            n=(n-1)/5*4;
            k--;
    }
    if(k==0)
        return 1;
    else return 0;
}

void main()
{
    for(int i=6;;i+=5)
    {
        if(fun(i))
            break;
    }
    printf("%d\n",i);
}
是6次


[ 本帖最后由 czsbc 于 2011-9-13 22:22 编辑 ]
2011-09-13 20:13
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
我在那3121调试 忘了 抱歉 马上去改

                                         
===========深入<----------------->浅出============
2011-09-13 20:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-349810-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.308629 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved