| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1391 人关注过本帖
标题:一道课本例题,没看懂,也没想好怎么做,大家给个思路
只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:3 
把思路调整了一下,修改了程序,结果确实为 3121,谨作参考:
程序代码:
#include<stdio.h>

int main(void)
{
    int x,n;
    float y;

    x=1;
    y=((x*5)+1)/4*5;
    for(n=1;n<=5;)
    {
        y=y/4*5+1;
        ++n;
        if(y-(int)y>0.0)
        {
            ++x;
            y=((x*5)+1)/4*5;
            n=1;
        }
    }
    printf("%d\n",(int)y);

    return 0;
}
2009-07-24 04:08
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:3 
先给出我的代码:
程序代码:
#include <stdio.h>

int main()
{
    int i, j, n;

    for (i = j = 0; j != 5; ++i)
    {
        for (n = i, j = 0; j < 5 && n % 4 == 0; ++j)
            n = n / 4 * 5 + 1;
    }
    printf("%d\n", n);

    return 0;
}



后来一想,这群人怎么这么笨阿,苹果不是钱阿,一个也很贵的嘛,扔了多可惜,是我就把苹果扔苹果堆里面,然后自己拿走自己的一份,至于多出来的那个,剩下的人想怎么样就怎么样。代码如下:

程序代码:
#include <stdio.h>

int main()
{
    int i, j, n;

    for (i = 2,j = 0; j != 5; ++i)
    {
        for (n = i, j = 0; j < 5 && n % 4 == 1; ++j)
            n = n / 4 * 5 + 1;
    }
    printf("%d\n", n);

    return 0;
}

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-07-24 05:54
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:0 
报告楼上,你第二个代码,把第五个人的情况没考虑进去。因为前面4个人已经分别放入一个苹果了,所以,第五个人发现,他再放入一个苹果后,正好又有5个苹果,可以再分每人一个。所以你应该在最后值的情况下减去5个苹果。

To  four  years  in  each  other's
2009-07-24 08:56
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:1 
不对吧,后面的人不知道前面的放了回去了。我是说,放回去以后,总和仍然是5的整数倍加一,同时也是四的整数倍加一,而后来的人是不知道这个情况的,也无从知道“再放一个正好五个”,因为轮到他的时候,他面对的还是4的整数倍加一(同时也是五的整数倍加一)个苹果,而不是N的整数倍加四个。(否则不满足题意了)

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-07-24 11:16
sqjhwl
Rank: 2
等 级:论坛游民
帖 子:17
专家分:19
注 册:2009-7-24
收藏
得分:0 
以下是引用arthaszu在2009-7-23 23:57的发言:

#include<stdio.h>
main()
{
    int n;
    n=5*5*5*5*5-4;
    printf("%d",n);
}
 
需要解释吗?

是的大哥弄的晕乎乎的这也太离谱了吧
就这么简单???
2009-07-24 19:33
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:9 
楼主,我写详细,你看看能明白吗
a.
第一个人来的时候,发现多一个苹果。我站在旁边,借他4个苹果。他分出5堆,拿走 一份(其实就是原来的一份+多的那个苹果)。
b.
我在剩下的4堆苹果中,各拿出一个苹果,共4个。总苹果数又恢复到最开始的那些。
c.
第二个人来的时候,也是发现多一个苹果。我又借给他4个苹果。同上,拿走他的那份(原来正常的一份+多的那个苹果)。
d.
我又拿回了自己的苹果。
e.
第三、第四个人如上,拿走他们的苹果。
f.
第五个人也来分苹果了,问我借了4个。如上般拿走他的那份(正常的一份+多的1个苹果)。
g.
他们能每次都分成5份,是因为我支援了那4个苹果。
h.
他们5个人分了5次就是  5*5*5*5*5
但是要还给我4个苹果,所以最后要  -4


不知道楼主明白没

To  four  years  in  each  other's
2009-07-24 20:32
soky
Rank: 4
等 级:业余侠客
帖 子:126
专家分:228
注 册:2009-7-13
收藏
得分:0 
以下是引用广陵绝唱在2009-7-24 03:48的发言:

实在对不起,我只是照搬了书上的范例,而没去验证它的结果正确性,不过书上的答案与我运行后的结果均是 15621 。

    如果这个程序对您产生了任何不良后果,对此深表抱歉。

我的课本上是3121,而且今天老师把那个题讲了,也是3121
2009-07-24 20:46
soky
Rank: 4
等 级:业余侠客
帖 子:126
专家分:228
注 册:2009-7-13
收藏
得分:0 
以下是引用arthaszu在2009-7-24 20:32的发言:

楼主,我写详细,你看看能明白吗
a.
第一个人来的时候,发现多一个苹果。我站在旁边,借他4个苹果。他分出5堆,拿走 一份(其实就是原来的一份+多的那个苹果)。
b.
我在剩下的4堆苹果中,各拿出一个苹果,共4个 ...

高手,我终于遇见传说中的数学高手了
2009-07-24 20:50
arthaszu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:90
专家分:163
注 册:2009-6-29
收藏
得分:0 
其实我是取巧了 根本不算写程序,完全是玩数学游戏。
我还是比较喜欢 StarWing83  写的第二个代码,
因为他把数学的思想与编写程序结合在了一起。

ps:还在想第二个代码问题出在那里,运行以后答案有些问题。

To  four  years  in  each  other's
2009-07-24 21:23
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
额,我的第二个代码和题目的不一样啦。我改了题目。我第二个代码算的题目是这样的:

个好朋友分一堆苹果,第一个人把苹果分成5份,为了公平,扔掉多余的1个苹果,[bo]但是他突然觉得就这么扔掉一个苹果好浪费,于是他将苹果扔到了四人份的那堆里面[/bo],拿上自己的一份走了。第二个人来了,又把剩余的苹果分成5份,又跟第一个人一样把多余的一个扔到了四人份的那堆里面,拿上了自己的一份走了。以后来的三个人都这样做的。那么,最初有多少苹果?

结果应该是一样的,然而因为中途都没有扔苹果,所以苹果凭空多了五个,就是这样(哈哈~~)

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-07-25 04:14
快速回复:一道课本例题,没看懂,也没想好怎么做,大家给个思路
数据加载中...
 
   



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

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