騰訊筆試:把兩個數和告訴A,積告訴B,求這兩個數是什麼
阿新 • • 發佈:2019-02-19
題目:
1-20的兩個數把和告訴A,積告訴B,
A說不知道是多少,
B也說不知道,
這時A說我知道了,
B接著說我也知道了,問這兩個數是多少?
分析:
設和為S,積為M。
首先,A:我不知道。
說明:S可以分解成多個組合,而2=1+1,3=1+2,40=20+20,39=19+20,只有一種分解方式,因此S應屬於[4,38]集合。
其次,B:我也不知道。
說明:M也可以分解成多個組合,因此M不是質數。
再者,A:我現在知道了。
說明:S分解方式中只有一個相乘之後是合數,其他分解方式相乘之後都是質數。這樣,A才能根據B說不知道,而排出所有相乘是質數(M是質數,分解方式只有一種:1*質數)的可能,剩下的一個相乘之後是合數的組合就是A所得到的解。
而相乘之後是質數的:只有1*質數 = 質數!
1-20的所有質數:T = {2, 3, 5, 7, 11, 13, 17, 19}。
設x為T中的任意一個質數。那麼,S的可能取值集合:{2+1, 3+1, 5+1, 7+1, 11+1, 13+1, 17+1, 19+1},即:SS = {3, 4, 6, 8, 12, 14, 18, 20}
S= 3時:3不在【4,38】集合,排除;
S= 4時:4=2+2=1+3,(2,2)相乘為4(非質數,滿足條件),(1,3)相乘為3(質數,排除);
S= 6時:6=1+5=2+4=3+3,相乘分別為5,8,9,出現兩個合數,排除;
其他值都是存在多個合數分解的情況,因此均排除了。
因此,A得到的解是2和2.
最後,B:我也知道了。
說明:B根據自己已知的M值,站在A的立場思考,能夠獲得M=4的結果,現在驗證如下:
M=4=2*2=1*4,相加結果為4,5.而5不在SS集合之中,因此結果為2和2.
因此,最終答案為2和2.