首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  数学

一道数学题

  •  
  •   marshluca · 2010-07-29 22:00:59 +08:00 · 6117 次点击
    这是一个创建于 3341 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有a,b,c,d,四个人,互相传球,从a开始传出,经过5次传球后,球回到a的手里,总共有多少种传球的方法 ?
    21 回复  |  直到 1970-01-01 08:00:00 +08:00
        1
    apple   2010-07-29 22:13:31 +08:00
    a~a
    中间三次,bcd来排,排除含有bb,bbb这种类型的排列,就是答案了。
        2
    lianghai   2010-07-29 22:21:28 +08:00
    唉……高中时的数学题现在我已经能把自己算晕了……算出一个 96 然后 google 一下,得知错了……
    校正了一个疏忽才得出正确答案……
        3
    marshluca   2010-07-29 22:32:00 +08:00
    非常欢迎大家写代码
        4
    aligo   2010-07-29 23:18:37 +08:00
    4个人排成一圈,或在排成1字一排貌似最后都没法传到a手里呢
    [code]
    var count = 0;
    var routes = [];
    var limit = 5;
    var circle = false;
    var found = function (route)
    {
    routes.push(route);
    //alert(route);
    }
    var pass = function (cur, time, route)
    {
    if ((cur === 1) && (time === limit)) {
    count++;
    found(route);
    }
    if (circle && (cur > 4)) {
    cur = 1;
    }
    if (circle && (cur < 1)) {
    cur = 4;
    }
    if ((cur < 5) && (cur > 0) && (time < limit) ) {
    pass(cur + 1, time + 1, route + '>');
    pass(cur - 1, time + 1, route + '<');
    }
    }
    pass(1, 0, '');
    alert(count + ':' + routes);
    [/code]
        5
    Majia   2010-07-29 23:46:28 +08:00
    (-1)^n(x-1)[1-(-x+1)^(n-1)]/x

    n为传球次数,x为人数(x>=3)
        6
    Majia   2010-07-29 23:50:33 +08:00
    貌似写得不太好

    (-1)^n*(x-1)*[(1-(-x+1)^(n-1)]/x
        7
    marshluca   2010-08-08 12:32:26 +08:00
    # python
    def compute(current,remain):
    if remain == 0:
    if current == 'a':
    return 1
    else:
    return 0
    else:
    return sum(compute(next,remain-1) for next in ['a','b','c','d'] if next!= current)


    print compute('a',5)
        8
    xhacker   2010-08-08 15:01:41 +08:00
    楼上的程序很慢,我也写一个来献献丑。n 是传球次数,m 是人数。O(n*m^2)的。

    这里不能贴代码,先贴在别处。
    http://paste.ubuntu.com/474828/
        9
    rveo   2010-08-08 15:21:06 +08:00
    1 + 2 + 3 + 4 = 10 种
        10
    rveo   2010-08-08 15:25:27 +08:00
    这种题,是常见的小学 4 - 5 年级奥林匹克数学题,不过,在前面加了个障眼法( 4 个人)。

    在数学表达式里,似乎是 ( N - 1 )! 表示从 1 + ( 1 + 1 ) + (( 1 + 1 ) + 1 )…… 这样的累加。

    我不记得 我这个描述 是否正确了。
        11
    rveo   2010-08-08 15:29:28 +08:00
    额。。应该错了。。N! 是 阶乘累加,正确的是 1 + 2 + 3 + …… + ( N - 1 ) + N 这样。
        12
    Livid   V2EX Moderator   2010-08-08 18:17:37 +08:00
    @xhacker 这里支持 GitHub 的 Gist。
        13
    xhacker   2010-08-08 19:51:00 +08:00
        14
    marshluca   2010-08-08 20:58:39 +08:00
    贴上ruby,代码不漂亮:

    http://gist.github.com/513999
        15
    xhacker   2010-08-08 21:12:20 +08:00
    @marshluca 试试把 n (传球次数)改大一些,然后阁下的程序就很悲剧……
        16
    marshluca   2010-08-08 21:15:23 +08:00
    @xhacker 被你发现了... 这是个小学奥数题

    我这还有一道小学三年级的奥数:
    一个六位数,分别用2,3,4,5,6乘它,得到的五个新数仍是由原数中的六个数字组成,只是位置不同,则此六位数是多少?
        17
    xhacker   2010-08-08 21:22:05 +08:00
    @marshluca 呵呵,编程解决奥数题……太邪恶了~
        18
    marshluca   2010-08-08 21:25:47 +08:00
    @xhacker 你可以用这个法子来诱惑你娃儿学编程 哈哈
        19
    marshluca   2010-08-08 21:28:57 +08:00
    不编程:
    先确定最高位和个位,最高位只能是1. 用2~9分别乘2,3,4,5,6,分别得五个数,取其个位,可定只有7去乘才出现1,那样就确定了六个数是,7.4.1.8.5.2,而最高位是1个位是7,乘以2就可以定十位是8,别的数字不行,类推下去即可得出结果是 ?
        20
    xhacker   2010-08-08 21:31:14 +08:00
    @marshluca 哈哈哈,我啥时候都有娃儿了~
    让我想起来前一阵编程解决排列组合问题……
        21
    vayn   2010-08-08 23:16:40 +08:00
    @marshluca “取其个位,可定只有7去乘才出现1”,这句是什么意思?1/7?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1273 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 20ms · UTC 17:37 · PVG 01:37 · LAX 10:37 · JFK 13:37
    ♥ Do have faith in what you're doing.