標籤:

這個題目應該怎麼解答?


1A 2C 3B 4C 5A 6C 7D 8D 9B 10A

第一部先審題,這樣的題裡面肯定有幾個問題里會有hint。比如:

1,根據第一題,1,2,3,4裡面肯定有A。而且第一題選A也符合邏輯。

2,根據第二題,這10道問題里只有兩道連續的問題的答案是相同的。

3,答案為母音的題數其實就是A的個數,所以4和8是一樣的,根據選項,可以推測A只有2個或者3個。

4,10減去8題的答案中A的個數就是答案為輔音的題數。所以8題選C時9題選A,8題選D時9題選B,兩道題答案不可能一樣,故第二題不會選D。

5,第十題就是最後用來調整的。

6,由於第二題給出的選項里不包括1-4題,所以1-4題中肯定不會有連續相同的答案,也就是說第3題A,D都是不可能選的。第3題要麼和第8題答案一樣,要麼和第9題答案一樣。

根據以上提示,可以寫出初步的可能答案。

因為3不可能選A,所以第一題的答案只可能是A,C,D,我們把三種情況寫出來。然後根據其他題目看看有沒有能確定的題目答案。發現當4選A的時候,第8題也要選A,也就是A有0個,這矛盾了,所以把這個可能性划去。

接著看當2選A的時候,1題答案就是B了。這時第5題如果選A和B都和事實矛盾。而根據第二題的答案,除了5,6題之外沒有連續的相同答案了,所以第5題也不會和第4題答案相同,這種情況下第5題答案只可能是C。根據第2題答案,6題答案也是C。

那當2選A的時候,可以推出1B 2A 5C 6C。接下來我們從排除了兩個選項的3題入手。

3=C時,第8題也選C。說明A一共有兩個。那麼第4題選D,輔音的題數8個,所以第9題選A。

那第8題是C的時候,第7題怎麼選呢?我們發現選哪個都矛盾,所以這條路行不通。

3=B時,9選B。可以確定的答案為1B 2A 3B 5C 6C 9B.輔音題數為質數。10以下的質數有2,3,5,7。現在還有四個空,而且7,8又不能一樣,所以加上已經有的一個,A最多也只有4個了。也就是說輔音題數最少也要有6個。因此可以確定這時候答案為輔音的題數應該是7個。A有三個。8選D,4選B.這樣的話4和3答案也一樣了,違背了第2題答案。故這條路也走不通。

也就是說2題不能選A.只能第1題選A.

我們再重新來過。

首先因為3題排除了兩個答案,所以從它入手。

3=C的時候,8也選C。還記得剛才8題選C時候的下場嗎?7題就沒法選了,所以排除。

3=B。9題也選B。輔音答案是質數,也就是2,3,5,7,9。相對應的A的數量是8,7,5,3,1.但是A不可能大於3個否則8題沒得選了,也不能小於2個否則4題沒答案。所以A只能是3個。

現在確定的答案是1A3B4C8D9B

看看剩下的題目,我們從容易推出矛盾的第五題入手。發現根據現在的情況第五題只能選A或者B。

於是寫出來。

當5=B的時候,2題也為B。和3題一樣了,所以矛盾。故5題選A.

整理一下答案,1A 3B 4C 5A 8D 9B 現在我們發現第2題可以確定答案了。因為89不一樣排除D,而2題答案和1,3題不能一樣所以2題只選C。現在就只剩6和10題。因為要補滿3個A,所以其中之一必選A。當6選A的時候,會發現10選哪個都會和6題所說的矛盾。所以10選A,6於是選C。

最終答案便出來了。為了解說所有的可能性故意選了最迂迴的方法也就是每次都故意選了走不通的路。如果能碰巧選到對的哪個可能的話會更快地推理出來。另外其他答案中從7,8題的關係入手的方法會比這一種簡單很多~


Mathematica來試一把,{1,2,3,4}代表{A,B,C,D}:

Cases[Tuples[Range[1, 4],
10], {k1_Integer, k2_, k3_, k4_, k5_, k6_, k7_, k8_, k9_,
k10_} /; (k1 == 1 || k1 == 2 k2 == 1 || k1 == 3 k3 == 1 ||
k1 == 4 k4 == 1) (k2 == 1 k5 == k6
Cases[Split[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {x_,
x_}] == {{k5, k6}} ||
k2 == 2 k6 == k7
Cases[Split[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {x_,
x_}] == {{k6, k7}} ||
k2 == 3 k7 == k8
Cases[Split[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {x_,
x_}] == {{k7, k8}} ||
k2 == 4 k8 == k9
Cases[Split[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {x_,
x_}] == {{k8, k9}}) (k3 == 1 k4 == k3 ||
k3 == 2 k9 == k3 || k3 == 3 k8 == k3 ||
k3 == 4 k2 == k3) (k4 == 1
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {5} ||

k4 == 2
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {4} ||
k4 == 3
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {3} ||

k4 == 4
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {2})
(k5 == 1 k5 == k1 ||
k5 == 2 k5 == k2 || k5 == 3 k5 == k3 ||
k5 == 4 k5 == k4)
(k6 == 1
Cases[{Sort@
Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}]}, {{1,
x_}, ___, {_, x_}, ___} :&> x] == {} ||
k6 == 2
Cases[{Sort@
Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}]}, {{1,
x_}, ___, {3, x_}, ___} :&> x] != {} ||
k6 == 3
Cases[{Sort@
Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}]}, {{1,
x_}, ___, {3, x_}, ___} :&> x] != {} ||
k6 == 4
Cases[{Sort@
Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}]}, {{1,
x_}, ___, {4, x_}, ___} :&> x] != {})
(k7 == 1
Abs[k8 - k7] == 3 || k7 == 2 Abs[k8 - k7] == 2 ||
k7 == 3 Abs[k8 - k7] == 1 ||
k7 == 4 Abs[k8 - k7] == 0)
(k8 == 1
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {0} ||
k8 == 2
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {1} ||

k8 == 3
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {2} ||

k8 == 4
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> x] == {3})
(k9 == 1 !
PrimeQ[Cases[
Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1, x_} :&>
10 - x][[1]]] ||

k9 == 2
PrimeQ[Cases[
Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1, x_} :&>
10 - x][[1]]] ||

k9 == 3
Cases[Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1,
x_} :&> 10 - x][[1]] &< 5 || k9 == 4 IntegerQ[ Sqrt[Cases[ Tally[{k1, k2, k3, k4, k5, k6, k7, k8, k9, k10}], {1, x_} :&>
10 - x][[1]]]])
(k10 == 1 || k10 == 2 || k10 == 3 ||
k10 == 4)]

答案是:

{{1, 3, 2, 3, 1, 3, 4, 4, 2, 1}}

轉換一下:

{{1, 3, 2, 3, 1, 3, 4, 4, 2, 1}} /.
MapThread[
Rule, {Range[4], CharacterRange["A", "D"]}] /. {s__String} :&>
StringJoin[s]

得到:

{"ACBCACDDBA"}

當然,用Mathematica的樂趣不限於此,比如:

如果第2題不限定"唯一"的話,還能找到這些答案:

{"ABBCACCDBA", "ABBCADDDBA", "ABBCBAADBB", "ABBCBAADBC", "ABBCBAADBD", "ACBCACDDBA", "ACBCADDDBA"}


@蘇菲 的答案很對!不過沒有寫分析思路,我試著完善一下。

從第7題入手,仔細分析,可以發現第七題不管選什麼選項,第8題只能是B或者D,於是就分這兩種情況討論

假設第8題是B,那隻能說第7題選C得到的。

ABCD四個字母裡面只有A是母音,既然第8題選B(1個母音),那麼10個題裡面輔音就有9個,所以第9題可以選A和D——咦難道這不是單選題?這就該懷疑了...好,先不管,我們看看前面。看第4題,沒有一個選項是1,所以肯定錯了。到這裡這條路是死路一條了,說明我們剛開始假設第8題選B是錯的。

第8題選D,那麼第9題只能選B,第4題選C。

然後看第3題,根據剛剛得到的結論,顯然A不行,B是可以的,C不行,D呢?如果D可以,那麼第二題就應該選D,這與8、9兩題答案不吻合,所以第3題D也不行——於是第3題確定選B。

再看第5題,根據前面推定的第3第4題的答案,很快能把C和D選項排除掉,那麼B選項行不行呢?如果選B,那麼第2題也選B,於是第2第3兩題都選B答案就一樣了,這和第2題本身是矛盾的,所以也不能選B。於是第5題是A。

於是第1題也是A。

剛才已經把第2題的D選項排除了,我們進一步想一想,A也是不可能的,否則第1第2就是連續兩個A,與自己矛盾;B也是不可能的,否則第2第3就是連續兩個B,與自己矛盾;所以第2題選C。

於是第7題選D。

再看第6題,根據第2題的連續相同答案提示,我們可以排除A和D,剩下B和C。我們已知一共有3個A,如果選B,那麼說明有三個C,但是這樣就已經有三個B了兩個D了,再加上確定的三個A,總數超過10個,所以不行。於是第6題選C。

剩下第10題,為了完成總共3個A的結論,必須選A。

完畢。

1A 2C 3B 4C 5A 6C 7D 8D 9B 10A


這種題怎麼做呢,最好的方法當然就是編程暴力跑了


同 @蘇菲 ,過程吃完飯補。

----------------------------------------

推理的前提是每題單選。

第八題指的是選A的數量,和第四題一樣,根據重合項,這兩題都只能從C或D裡面選擇答案。

根據第七題與第八題的關係判斷。第八題選B時,第七題只能選C;第八題選D時,第七題任選;第八題選A或C時,第七題無解。又根據上一段的推理,第八題只能選D,即選A的題目有三個。同時得出第四題選C。同時得出第九題選B。

根據第二題判斷,1-5題沒有任何兩個挨著的題答案相同,已知第四題選C,則第三和第五都不選C,故第三題選B。

根據第五題判斷,不可能選C或D(因為第三題選的是B,第四題選的是C)。又根據第一題,1-4題裡面至少有一題選A,第五題選B的必要條件是第二題要選B,那麼這種情況下第一題必須選A;而第五題選A的必要條件是第一題要選A,因此,無論第五題怎麼選,第一題都得是A。

又根據第三條推理,第二題既不能選A也不能選B(因為第一題是A第三題是B)。已知第八和第九題答案不同,故第二題也只能C。

所以第五題只能選A。

因為第二題選的是C,故第七題選D。

現在只剩下第六題和第十題未解。因為已知有三個A,故,第六題和第十題中有且只有一個選A。目前為止得出的答案中,ABCD各有兩個,因此第六題無法選A(因為無論第十題選擇BCD哪項,都會有一個的數量與A相同)。所以選A的是第十題。

第六題選C或D,但第六題不能與第七題選項相同,故只能選C。

答案是acbcacddba


貼個稍微短點的Mathematica代碼,基本上就是每個題目直接翻譯,應該還是挺好看懂的

In[24]:= f[ans_] := Block[{count = Count[ans, #] /@ {1, 2, 3, 4}},
And[
Position[ans, 1, 1, 1] == {{ans[[1]]}},
Position[Differences[ans], 0] == {{4}} + ans[[2]],
ans[[3]] == ans[[{4, 9, 8, 2}[[ans[[3]]]]]],
Count[ans, 1] == 6 - ans[[4]],
ans[[5]] == ans[[ans[[5]]]],
If[ans[[6]] == 1, FreeQ[count[[2 ;; -1]], count[[1]]],
count[[1]] == count[[{0, 3, 3, 4}[[ans[[6]]]]]]],
Abs[ans[[7]] - ans[[8]]] == 4 - ans[[7]],
count[[1]] == count[[ans[[8]] - 1]],
Switch[ans[[9]], 1, ! PrimeQ[#] # &> 2, 2, PrimeQ[#], 3, # &< 5, 4, IntegerQ[Sqrt[#]]] [Total@count[[2 ;; -1]]] ]]; Select[Tuples[Range[4], 10], f, 1] // AbsoluteTiming %[[2, 1]] /. Thread[{1, 2, 3, 4} -&> Characters["ABCD"]]

Out[25]= {3.673606, {{1, 3, 2, 3, 1, 3, 4, 4, 2, 1}}}

Out[26]= {"A", "C", "B", "C", "A", "C", "D", "D", "B", "A"}

ans是答案的序列,1234分別對應ABCD。f[ans]判斷一個答案序列是否滿足要求。

And里是9個判斷語句,分別對應1~9這9道題(10怎麼選都符合就不管了)。

用Select取出所有可能的答案中第一個滿足所有條件的,用時3.7s。如果不加Select最後的,1大概要20秒.


如果我說很簡單。。。。。好了,正題。


由7可知8為D………………由8則9為B…4為C。則,綜合第2題(大愛第二題,條件太豐富了)3為B……則,致此第二題答案為A或C………由第五題判斷,2為C且,1,5為A,由2,得7為D。。再綜合題意不難得出剩下兩題6C,10A,,,。,。


哈哈哈我也做出來啦,先從5-9題入手,而且這些題跟上面某些題有矛盾,把不可能的選項消除,然後很多題就可以選出來啦


前面 @蘇菲 的答案很詳盡,我也提供一下自己的思路供參考。

1. 由題4、8關聯得,A的個數為2或3,題8答案為C或D;

2. 由題7題幹得題8隻能選D,因為選C得話題7無正確選項;8-D

3. 通過題8,推出題4、9選項;4-C 9-B

4. 考慮題3選項,發現A、C選項和已知矛盾,再看D也不能成立,因為題2中D選項不可能正確,由此,題3選B;3-B

5. 由題2題幹得題2、3不能有相同選項,即題2不能選B,再看題5,結合已知的題3、4選項,發現題5隻能選A;5-A

6. 由題5選A,得題1選A,根據題1、3答案,結合題2條件,排除題2的A、B選項,再由題8、9答案不相同,排除D選項,故題2選C;1-A 2-C

7. 由題2選C,得題7選D,且題5不選A,由題4、8條件得共有3個A項答案,再考慮題5、6答案不相同,故題6不能選A、D,故題10選A;7-D 10-A

8. 最後考慮剩下的題目6,B、C都作為答案出現2次,題6選C,正好使C出現3次,與A相同。6-C

以上


哈哈,這個問題好玩,我來分析下。

只能從第四題和第八題入手,第8題問答案是母音的個數,母音只有A/E/I/O/U,但是選項只有A/B/C/D所有其實問的是答案是A的個數,同樣的第4題問的也是答案是A的個數,根據兩題的備選答案的重合部分可知,十道題中答案是A的個數應該是2道或3道。

假設,十道題中有2道題答案是A,即第8題選擇C,則第7題無法找出正確答案,所以第8題只能選D,所以十道題中答案是A的個數應該是3道。

因此,可知第4題答案為C,第8題答案為D,第7題所有答案都可以,現在待定。

看別的問題,第9題,因為已經確定母音3個,所以輔音答案個數應為7,即答案為B。

因為第8、9題的答案不同,因此排除第2題的D選項。又假設A選項正確,則5、6題答案相同,同時排除答案D、C、B、A(嗯,一個一個看下來都對不上),所以A選項不正確;所以第2題答案只能是B或C。

再看第3題,如果答案為A,則與第四題答案為C相矛盾;如果答案為C,則第4題答案也是C,又和B矛盾了;如果答案為D,則與已排除的第2題答案不為D相矛盾;綜上所述,第3題答案為B。

又因為只有一對唯一連續的答案,所以第2題只能選C。

因為前四提中2、3、4題答案均不為A,所以為滿足第1題選項,答案只能為A。

再看第5題,只需要一個一個對選項可以看出只能選擇答案A。

因為第2題確定7、8題答案相同,所以第7題選D。

現在還剩6和10——

已經有答案的8道題中,有2個A,3個B,2個C,1個D。

假設第6題選A,與第2題矛盾;假設選B,則第10題選A,但3個A,4個B不符合要求;假設選C,則第10題A,3個C與3個A符合要求;假設選D,第10題選A,2個D與3個A不符合要求。

因此,第6題選C,第10題選A。

綜上所述,答案為A C B C A C D D B A

以上。

PS,很鬱悶啊,吃飯前看到的,挺感興趣,於是剛開始寫就被叫出去吃飯了,回來就發現已經有詳細答案鳥QAQ……不過好不容易寫個答案,還是寫出來個完整的給自己個交待吧,哈哈。


//以下內容複製粘貼到Microsoft Visual C++ 6.0,編譯執行跳出答案( ▼-▼ )

//shurufa break,so...

#include "stdafx.h"

#include "math.h"

int answer[11];

bool q1(int a)//to check the firse questions answer

{

int i=1;

for(;answer[i]!=1;i++)

;

if(i==a)

return true;

return false;

}

bool q2(int a)//to check the second..

{

int i;

int n=0;

int x=0;

for(i=1;i&<10;i++)

if(answer[i]==answer[i+1])

x=i,n++;

if(n!=1)

return false;

else if(a==1x==5||a==2x==6||a==3x==7||a==4x==8)

return true;

return false;

}

bool q3(int a)//

{

switch(a)

{ case 1:

if(answer[4]==1)

return true;

break;

case 2:

if(answer[9]==2)

return true;

break;

case 3:

if(answer[8]==3)

return true;

break;

case 4:

if(answer[2]==4)

return true;

break;

default:

return false;

break;

}

return false;

}

bool q4(int a)

{

int n,i;

for(n=0,i=1;i&<=10;i++)

if(answer[i]==1)

n++;

switch(a)

{

case 1:if(n==5) return true;break;

case 2:if(n==4) return true;break;

case 3:if(n==3) return true;break;

case 4:if(n==2) return true;break;

default:return false;break;

}

return false;

}

bool q5(int a)

{

if(answer[a]==a)

return true;

return false;

}

bool q6(int a)

{

int na,nb,nc,nd;

na=nb=nc=nd=0;

for(int i=1;i&<=10;i++)

switch(answer[i])

{case 1:na++;break;

case 2: nb++;break;

case 3: nc++;break;

case 4: nd++;break;

default:break;

}

switch(a)

{

case 1:if(nb!=nanc!=nand!=na) return true;break;

case 2:

case 3:if(nc==na) return true;break;

case 4:if(nd==na) return true;break;

default:return false;break;

}

return false;

}

bool q7(int a)

{

int d;

d=abs(answer[8]-a);

if(4-d==a)

return true;

return false;

}

bool q8(int a)

{

int n,i;

for(n=0,i=1;i&<=10;i++)

if(answer[i]==1)

n++;

switch(a)

{

case 1:if(n==0) return true;break;

case 2:if(n==1) return true;break;

case 3:if(n==2) return true;break;

case 4:if(n==3) return true;break;

default:return false;break;

}

return false;

}

bool q9(int a)

{

int n,i;

for(n=0,i=1;i&<=10;i++)

if(answer[i]!=1)

n++;

switch(a)

{

case 1:if(n==4||n==6||n==8||n==9||n==10) return true;break;

case 2:if(n==2||n==3||n==5||n==7) return true;break;

case 3:if(n&<5) return true;break;

case 4:if(n==1||n==4||n==9) return true;break;

default:return false;break;

}

return false;

}

bool check()//to check is all answer right

{

if(q1(answer[1])q2(answer[2])q3(answer[3])q4(answer[4])q5(answer[5])q6(answer[6])q7(answer[7])q8(answer[8])q9(answer[9]))

return true;

return false;

}

bool bianli(int i,int as)//it is recursive algorithm

{

answer[i]=as;

if(i==10)

return check();//when bianli end,check;

else{

for(int as=1;as&<=4;as++)

if(bianli(i+1,as))

return true;

return false;}

}

void showanswer()

{

for(int i=1;i&<=10;i++)

{

printf("%d.%c ",i,answer[i]==1?A:(answer[i]==2?B:(answer[i]==3?C:D)));

}

printf("
");

}

int main(int argc, char* argv[])

{

int i=1;

for(int as=1;as&<=4;as++)

if(bianli(i,as))

break;

if(as==5)

{

printf("no answer...and the code must have bug!
");

return 0;

}

showanswer();

return 0;

}


推薦閱讀:

偵探藝術史(三):福爾摩斯時代前篇
身為「DQ之父」的堀井雄二,其實他還製作了世界上第一款推理電子遊戲
[微劇] 愛倫坡的謀殺之謎派對
聊天|腦細胞已死!你遇到哪些很燒腦的漫畫?

TAG:推理 |