听说是微软面试题 (0分)

K

KN

Unregistered / Unconfirmed
GUEST, unregistred user!
1<X<Y<30
将X+Y告诉甲,将X*Y告诉乙
下面是甲乙对话
甲说:“我不知道X和Y是多少,但你也不知道”
乙说:“我知道X和Y分别是多少了!”
甲说:“我也知道了”
问X和Y分别是多少?
 
好像是4,13.
 
洗耳恭听
 
我也不知道啊,谁来说说正确的答案啊
 
怎么推算的?
 
不知道;请各位大虾知道的来说说,不知道的顶一下!谢谢!
 
问乙啊,乙不是知道了吗。哈哈,这是最简单方法,同时也最快捷。
 
我等这么久了,没有人知道吗???
Jeeh没有给出思路啊,不算!
 
有点难度啊~
 
http://c-ye.51.net/cgi-bin/post.cgi?action=replyquote&forum=2&topic=95&postno=7&listmy=1
创业论坛
甲说:
for (int i=1;i<=30;i++)
{ if(2i<x+y) //x+y用已知值代入
{ cout<<"x="<<i<<endl;
cout<<"y="<<x+y-i;
}
else
break;
}

乙说:
for (int i=1;i<30;i++)
for (int j=i+1;j<=30;j++)
if (i*j==x*y) //x*y用已知值代入
cout<<"x="<<i<<endl<<"y="<<j;
 
http://www.c114.net/forum/dispbbs.asp?BoardID=3&amp;RootID=7150&amp;id=7791&amp;star=1
其实,这是道二元方程式题,在中学就已经可以解:
设:x+y=甲;x*y=乙,则:x=甲-y,代入得:(甲-y)*y=乙,甲*y-y*y=乙;
其中,甲和乙是“已知”数,题就迎刃而解;
考这道题的目的,关键在于“已知”数,我认为微软在于考:这个世界,每人都有一个解决问题的能力,关键于沟通与合作,实现双赢。如果甲把结果告诉乙,则乙就可以解决问题;而乙把结果告诉甲,甲也可以解决。
 
這是我找到的一個解法,不過我也沒有完全弄明白。請各讓提出高見。
说话依次编号为S1,P1,S2,P2。
设这两个数为x,y,和为s,积为p。
由S1,P不知道这两个数,所以s不可能是两个质数相加得来的,而且s<=29,因为如果s>29,那么P拿到29×(s-29)必定可以猜出s了。所以和s为{11,17,23,27,29}之一,设这个集合为A。
由P1,乘积p必定含有因子2,而且含有两个质因子,而且最大的质因子不可能大于7,(假如含有因子11,就会有p至少是11×2×3,拆成11×6或者22×3不满足条件,假如含有因子13,就会有p至少是13×2×3,拆成13×6或者26×3也不满足条件),这条规则有助于简化和s的拆分。
1).假设s=11。
11=2+9=5+6,有18=2×9=3×6,只有2+9落在集合A中,P不会说出P1。而30=5×6=2×15,11和17都落在集合A中,所以只有这一种情况会令P说P1,所以S拿到11可以断言S2。但是问题在于P会说出P2的话,必须要s=17时S说不出S2才行。
下面看看s=17的情况,17=2+15=3+14=5+12=7+10=8+9,
由于p=2×15=5×6或p=3×14=2×21都会令P说出P1,所以s=17时S说不出S2。
所以s=11,p=30,这两个数是5和6的时候满足条件
2).假设s=23,
23=2+21=3+20=5+18=8+15=9+14,
由于p=9×14=6×21或p=3×14=2×21都会令P说出P1,所以s=23时S说不出S2。
3).假设s=27,
27=2+25=3+24=6+21=7+20=9+18=12+15,
由于p=6×21=9×14或p=12×15=9×20都会令P说出P1,所以s=27时S说不出S2。
3).假设s=29,29=2+27=4+25=5+24=8+21=9+20=14+15,
由于p=9×20=12×15或p=5×24=15×8都会令P说出P1,所以s=27时S说不出S2。
综上所述:这两个数只可能是5和6。
 
此题无解,因为他们没有交流各自知道的结果。上面推断的条件都不成立。
 
此题我也觉得无解。要让甲讲出第一句话容易,要乙讲出第二句话也容易,关键是让甲讲出第三句话!
 
jeeh是正解.这个解法说得很清楚.
 
如果是面试 我想关键是如何在1,2分钟内得到答案
我是这样考虑问题的话我想可以最快知道答案
首先我们答题的人是不知道X+Y和X*Y是多少 设X+Y=S X*Y=N 所以连S和N也要猜了
而切我不认为任何一个S都可以使甲知道X,Y 任何一个N都可以让已知道X,Y
依次还可以排除好多情况
首先排除 X=2 Y=3 因为甲或已知道X+Y=5 X*Y=6 自然知道X=2 Y=3
再排除除X=28 Y=29因为甲或已知道X+Y=57 X*Y=812 自然就知道X=28。Y=29
有种最乐观的情况(也是面试时可以成功的情况:)
排除了X=2 Y=3那么来实验一下如何?
X=3 Y=4
甲知道是X+Y=7 可以肯定甲还是不知道X,Y是多少。于是甲告诉已他不知道X,Y是多少 但是他也没有告诉已X+Y=7,说‘我认为你也不知道X,Y是多少’ (我想这很重要,也是不能用二元方程解的原因)
已知道X*Y=12 同时了解到甲可以根据X+Y肯定自己不知道X*Y是多少,(这很重要)那么已在两个答案(2,6)(3,4)间分析,如果X=2 Y=6 那么甲得到的是X+Y=8,已可以知道甲就有2种答案(2,6)(3,5)这里面的3*5=15 足以让已知道X=3 Y=5了 即 (X=2,Y=6),在看 X=3,Y=4 那么X+Y=7 甲就有(3,4) (2,5)可供选择,甲想:3*4=12 那么以也无法断定X,Y 已知道这些情况后可以分析出..............
KAO ! 刚才想什么来着??? 忘了!!!
 
一看MS的面试题就知道为什么MS的帮助文件总是做的
那么让容易让人昏头了~~~~~
 
有点难度
 
顶部