楼主: popik
6646 46

[经济] 微软的一道众多人绞尽脑汁也做不出来的题目 [推广有奖]

21
郭文钊 发表于 2009-8-15 13:15:12
对于这块我都不懂,学习一下
初生心斋

22
ycliyuting 发表于 2009-8-15 14:03:12
严重同意rageyodream的答案~

23
netpai 发表于 2009-8-15 14:37:55
popik 发表于 2009-8-14 01:10
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数
甲说:“我猜不出”

  乙说:“我猜不出”
  甲说:“我猜到了


乙说:“我也猜到了


问这两个数是多少?


(记得博弈论的诡计_王春永编著的书里谈到过这样的问题,但找不到了,知道在书上哪里的指教下不)

1)试用博弈论的方法分析。
2)据说答案是3和4;但如果考虑两个数可以一样的情况,是不是答案还可以为2,8;4,4呢?
我们不妨把这这个题目再做点改动:
教授选出两个从2到9的数,把它们的和告诉学生甲,把它们的积告诉学生乙,让他们轮流猜这两个数
甲说:“我猜不出”

乙说:“我猜不出”

甲说:“我猜不出”
乙说:“我猜不出”

甲说:“我猜到了

乙说:“我也猜到了


问这两个数是多少?

24
jangcho 发表于 2009-8-15 14:50:08

分两种情况讨论:




首先,如果条件是两个数字可重复:





第一步,甲说猜不出,可以排除以下红笔标注序数对:
4:(2,2)
5:(2,3)
6:(2,4);(3,3)
7:(2,5);(3,4)
8:(2,6);(3,5);(4,4)
9:(2,7);(3,6);(4,5)
10:(2,8);(3,7);(4,6);(5,5)
11:(2,9);(3,8);(4,7);(5,6)
12:(3,9);(4,8);(5,7);(6,6)
13:(4,9);(5,8);(6,7)
14:(5,9);(6,8);(7,7)
15:(6,9);(7,8)
16:(7,9);(8,8)
17:(8,9)
18:(9,9)




第二步,乙说猜不出,首先可以排除以下红笔标注序数对:
4:(2,2)
6:(2,3)
8:(2,4)
9:(3,3)

10:(2,5)
12:(2,6);(3,4)
14:(2,7)
15:(3,5)
16:(2,8);(4,4)
18:(2,9);(3,6)
20:(4,5)
21:(3,7)

24:(3,8);(4,6)
25:(5,5)
27:(3,9)
28:(4,7)
30:(5,6)
32:(4,8)
35:(5,7)

36:(4,9);(6,6)
40:(5,8)
42:(6,7)
45:(5,9)
48:(6,8)
49:(7,7)
54:(6,9)
56:(7,8)
63:(7,9)
64:(6,4)
72:(8,9)
81:(9,9)


然后乙会查看剩下的10对数中有没有已经被甲排除的(就是甲在第一步中会说“我猜到了”的数对,也即第一步中红色标出部分),发现没有,故仍剩这10对数字。






第三步,甲说猜到了。结合甲、乙的说法,排除和相同的数对,因为如果是和相同的数对的话,甲仍不能猜到(别忘了甲知道和数


12:(2,6)8;(3,4)7


16:(2,8)10;(4,4)8


18:(2,9)11;(3,6)9


24:(3,8)11;(4,6)10


36:(4,9)13;(6,6)12
这样,就剩下四种可能(这四种的任意一种甲由于知道其和,都会说“我猜到了”:


12: (3,4)7


18: (3,6)9


36(4,9)13;(6,6)12






第四步,乙说猜到了。那么可以排除上面剩下的4对数中积相同的对(因为如果相同,乙仍不能判定):


12: (3,4)7


18: (3,6)9


36(4,9)13;(6,6)12




因此,如果条件是两个数字可重复,那么答案是:(3,4)和(3,6),即两对数中的任意一对都满足题意!






25
jangcho 发表于 2009-8-15 14:50:40

其次,如果条件是两个数字不可以重复:



第一步,甲说猜不出,可以排除以下红笔标注序数对:


5:(2,3)


6:(2,4)


7:(2,5);(3,4)


8:(2,6);(3,5)


9:(2,7);(3,6);(4,5)


10:(2,8);(3,7);(4,6)


11:(2,9);(3,8);(4,7);(5,6)


12:(3,9);(4,8);(5,7)


13:(4,9);(5,8);(6,7)


14:(5,9);(6,8)


15:(6,9);(7,8)


16:(7,9)


17:(8,9)



第二步,乙说猜不出,可以排除以下红笔标注序数对:


6:(2,3)


8:(2,4)


10:(2,5)


12:(2,6);(3,4)


14:(2,7)


15:(3,5)


16:(2,8)


18:(2,9);(3,6);


20:(4,5)


21:(3,7)


24:(3,8);(4,6)


27:(3,9)


28:(4,7)


30:(5,6)


32:(4,8)


35:(5,7)


36:(4,9)


40:(5,8)


42:(6,7)


45:(5,9)


48:(6,8)


54:(6,9)


56:(7,8)


63:(7,9)


72:(8,9)


然后乙会想:剩下的6对数中有没有已经被第一步排除了的,发现没有



第三步,甲说猜到了。结合甲、乙的说法,排除和相同的数对,因为如果是和相同的数对的话,甲仍不能猜到(别忘了甲知道和数!):


12: (2,6)8;(3,4)7


18: (2,9)11;(3,6)9


24(3,8)11;(4,6)10
这样,就剩下四种可能(这四种的任意一种甲由于知道其和,都会说“我猜到了”:


12: (2,6)8;(3,4)7


18: (3,6)9


24(4,6)10




第四步,乙说猜到了。那么可以排除上面剩下的4对数中积相同的对(因为如果相同,乙仍不能判定):


12: (2,6)8;(3,4)7


18: (3,6)9


24(4,6)10




因此,如果条件是两个数字不可重复,那么答案是:(3,6)和(4,6),即两对数中的任意一对都满足题意!

26
david_yr 发表于 2009-8-15 15:29:44
我做的是允许数字重复的情况,答案是(3,4)(3,6)
采用matlab编程实现:
%分别构造和与积的矩阵
for i=2:9
    for j=2:9
        a((i-1),(j-1))=i+j;
        b((i-1),(j-1))=i*j;
    end
end
%提取上三角阵,将因为计算顺序不同导致的重复元素去掉
a=triu(a);
b=triu(b);
%找出甲第一轮无法判断的组合
A=a;
for i=1:8
for j=1:8
k=a(i,j);
if (length(find(A==k))==1)
a(i,j)=0;
end
end
end
%找出乙在第一轮无法判断的组合
B=b;
for i=1:8
for j=1:8
k=b(i,j);
if (length(find(B==k))==1)
b(i,j)=0;
end
end
end
%找出甲乙在一轮不能判断出的组合
X=a&b;
a=a.*X;
b=b.*X;
%找出甲在第二轮可以判断出的组合
A=a;
for i=1:8
for j=1:8
k=a(i,j);
if (length(find(A==k))>1)
a(i,j)=0;
end
end
end
%找出b中与之相对应的元素
X=a&b;
b=b.*X;
%确定乙最后也能够判断出来的组合
B=b;
for i=1:8
for j=1:8
k=b(i,j);
if (length(find(B==k))>1)
b(i,j)=0;
end
end
end
%确定最终的非零元素的位置,即可能的组合
X=ones(8,8);
X=X&b;
[r,c]=find(X==1);
%数字是2到9,数组中的索引是1到8
r=r+1
c=c+1
运行答案:
r =

     3
     3


c =

     4
     6
已有 1 人评分学术水平 收起 理由
netpai + 1 佩服,有算法!虽没有检验,加个分先!

总评分: 学术水平 + 1   查看全部评分

Quant路上的旅人。。。

27
clark1025 发表于 2009-8-15 16:10:07
应该是3,4和3,6如果不允许重复
扯淡到底

28
宋凌峰 在职认证  发表于 2009-8-15 16:11:30
天哪,这都用得上Matlab,楼上的强
一只努力奋斗的猪;
一只令人难忘的猪;
一只感人至深的猪。
生得潇洒,死得优雅。
微博:http://weibo.com/slif

29
Jukaishen 发表于 2009-8-15 16:41:50
个人认为要先推理逻辑然后才是从最大和开始逐一计算.
No pain, No gain.

30
hongyanni 发表于 2009-8-15 16:47:26
我喜欢  嘿嘿

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2025-12-30 05:04