让人脑子抽筋的逻辑问题

软件和网站开发以及相关技术探讨
回复
头像
seeghost
帖子: 35
注册时间: 2007-08-16 9:37
来自: 广东东莞

让人脑子抽筋的逻辑问题

#1

帖子 seeghost » 2008-05-06 18:53

某教授给他的三个学生的脑门上各贴了一张纸条,并告诉他们:每个纸条上都写了一个正整数,并且其中两个的和等于第三个!(每个人可以看见另两个数,但看不见自己的)
教授问第一个学生:你能猜出自己的数吗?回答:不能;
问第二个,回答:不能;
问第三个,回答:不能;
再问第一个,仍然回答:不能;
再问第二个,仍然回答:不能;
再问第三个:这次回答:我猜出来了,是144!
下面请问:
1 第一个学生脑门上的纸条写的是什么数?

这个能用C或其他算出来吗?
~月亮好大,像个饼...
poet
帖子: 2841
注册时间: 2006-09-11 22:47

#2

帖子 poet » 2008-05-06 19:09

逻辑推理这种事情,关键不在于逻辑推理的过程本身,而在于建模,也就是说如何用数学方法把它表达出来。——这个题目这么简单,能把它表达出来的时候,大脑早就推理出来了。

计算机辅助逻辑推理只用于推理比较复杂的事情。
头像
hethe
帖子: 3666
注册时间: 2005-08-01 9:14

#3

帖子 hethe » 2008-05-06 19:12

好奇,第三个学生怎么可能猜得出来?
Gedanken ohne Inhalt sind leer .Anschauungen ohne Begriffe sind blind.
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12

#4

帖子 solcomo » 2008-05-06 19:17

我想要答案 :shock:
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#5

帖子 eexpress » 2008-05-06 19:35

x1+x2=x3
x3=144 这个是前提,否则他猜不出自己的。
x1=1...143遍历
第三个学生怎么可能猜得出来?
那不是猜出来的。是题目的一部分。是条件。否则你也猜得出来。
第一个学生脑门上的纸条
条件还少。比如某人只会加法。或者是傻子。
● 鸣学
头像
seeghost
帖子: 35
注册时间: 2007-08-16 9:37
来自: 广东东莞

#6

帖子 seeghost » 2008-05-07 2:04

答案不止一个吧!至于多少,我也不知...反正发上来,大家看看,能解得出来最好...
~月亮好大,像个饼...
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
联系:

#7

帖子 laborer » 2008-05-07 4:24

代码: 全选

#!/usr/bin/python
# -*- coding: utf-8 -*-

n = 10

print "某教授给他的三个学生的脑门上各贴了一张纸条,并告诉他们:每个纸条上都" \
    "写了一个正整数,并且其中两个的和等于第三个!(每个人可以看见另两个数," \
    "但看不见自己的)教授问第一个学生:你能猜出自己的数吗?回答:",
for i in range(1, n):
    print "不能;" 
    print ("再" if i>=3 else "") + "问第" + ("一","二","三")[i % 3] + \
        "个,回答:",
print "我猜出来了!"
print "请问:这三个数分别是多少?"
print
print "答:这三个数可以是下列组合,其中x为任意正整数:"

knowledge = [(1,0,0), (0,1,0), (0,0,1)]

def learn(a, b, c):
    t = [i for i in (a, b, c) if i > 0]
    if len(t) != 2:
        return
    囗囗囗, t = t
    while t % 囗囗囗:
        囗囗囗, t = t%囗囗囗, 囗囗囗
    t = (a/囗囗囗, b/囗囗囗, c/囗囗囗)
    if t not in knowledge:
        knowledge.append(t)

a, b, c = 2, 0, 1
z = [0, 0, 0]
for i in range(n):
    j = len(knowledge)
    a, b, c = b, c, a
    for k in [k for k in knowledge if k[a]]:
        z[a], z[b], z[c] = 0, k[a]-k[b], k[a]+k[c]
        learn(*z)
        z[a], z[b], z[c] = 0, k[a]+k[b], k[a]-k[c]
        learn(*z)

for k in knowledge[j:]:
    z[a], z[b], z[c] = k[b]+k[c], k[c], k[b]
    print "%dx %dx %dx" % tuple(z)
运行结果

代码: 全选

某教授给他的三个学生的脑门上各贴了一张纸条,并告诉他们:每个纸条上都写了一个正整数,并且其中两个的和等于第三个!(每个人可以看见另两个数,但看不见自己的)教授问第一个学生:你能猜出自己的数吗?回答: 不能;
问第二个,回答: 不能;
问第三个,回答: 不能;
再问第一个,回答: 不能;
再问第二个,回答: 不能;
再问第三个,回答: 不能;
再问第一个,回答: 不能;
再问第二个,回答: 不能;
再问第三个,回答: 不能;
再问第一个,回答: 我猜出来了!
请问:这三个数分别是多少?

答:这三个数可以是下列组合,其中x为任意正整数:
13x 8x 5x
18x 11x 7x
11x 7x 4x
14x 9x 5x
19x 12x 7x
30x 19x 11x
9x 5x 4x
16x 9x 7x
11x 6x 5x
20x 11x 9x
17x 10x 7x
22x 13x 9x
19x 11x 8x
26x 15x 11x
......
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
回复