iT邦幫忙

0

求解 IQ題

1.請問有幾題答案是1(1)1 (2)2(3)3(4)4(5)5
2.請問有幾題答案是2 (1)1 (2)2(3)3(4)4(5)5
3.請問有幾題答案是3 (1)1 (2)2(3)3(4)4(5)5
4.請問有幾題答案是4 (1)1 (2)2(3)3(4)4(5)5
5.請問有幾題答案是5 (1)1 (2)2(3)3(4)4(5)5
6.請問有幾題答案和該題的下一題答案差1 (1)1 (2)2(3)3(4)4(5)5
7.請問有幾題答案與題號有大於1的公因數(1)1 (2)2(3)3(4)4(5)5
8.請問有幾題答案大於題號(1)1 (2)2(3)3(4)4(5)5
9.已知所有答案總和為6的倍數。則本題答案為?(1)1 (2)2(3)3(4)4(5)5
10.已知若兩相異題答案相同,則題號差為質數。則本題答案為?(1)1 (2)2(3)3(4)4(5)5

看更多先前的討論...收起先前的討論...
微笑 iT邦新手 3 級 ‧ 2020-12-28 11:57:08 檢舉
.....
诶.......?
不會,果然我能夠唸九年放牛班不是沒有原因的
柯柯 iT邦新手 5 級 ‧ 2020-12-28 17:31:09 檢舉
嗷嗷
2
微笑
iT邦新手 3 級 ‧ 2020-12-28 16:32:19

4
2
1
2
1
4
3
1
5
1

TEST

2
japhenchen
iT邦大師 1 級 ‧ 2020-12-29 08:38:22

解答為 5、1、1、1、2、1、1,1、2、1


因為你在IT界發問,我就用IT的方法來解決,至於高智商的人很快就能純肉體求解,我不行~

答案不是網上搜來的,我自己用python列出可能的答案組合排列,符合要件的答案有674450組,我就任選一組來驗証答案
[1, 1, 1, 5, 1, 5, 3, 4, 2, 1]
1、答案1的題目有5組
2、答案2的題目有1組
3、答案3的題目有1組
4、答案4的題目有1組
5、答案5的題目有2組
(以上皆≧1且≦5)
6、這一題的答案跟下一題差1的有1組(7跟8)
7、答案與題號的公因數大於1的有1組(第8題答案4,公因數4)
8、答案大於題號的有1組(第4題)
9、所有答案加起來為24,是6的倍數沒錯,所以本題答案為2
10、質數都是大於1,且本命題1到10之間題號相差為質數的只有2、3、5、7四個數字,符合本條件的有N組(大於1就算,因本題沒限定條件1到5個,因第1跟3差2,第3跟5差2、第3跟10差7、第4跟6題差2...),本題答案為1(排列組合的最後一個答案)

https://ithelp.ithome.com.tw/upload/images/20201229/20117954PKeZLSmShr.jpg

(給分才給完整原始碼,不扣掉註解跟贅餘行,才65行)

0
7iml
iT邦新手 5 級 ‧ 2020-12-29 16:53:14

我這邊的話就暴力解
因為題目一來數列很少,二來都用簡單的數學式子配合判斷式就能解決

先用迴圈把10題的每個可能都算1次
while(a <= 5)
{
while(b <= 5)
{
....
}
}

再從最裡面的迴圈來驗證6-10題的答案

=====================================
6-10驗證方法:

假設
a = 第1題答案
b = 第2題答案
c = 第3題答案
以此類推...

answer為boolean
result = 應該要算出來的答案

6.請問有幾題答案和該題的下一題答案差1
=>下一題的答案和這題答案差1

result = 0
if(a = b+1 or a = b-1)
{
result = result+1;
}
if(b = c+1 or b = c-1)
{
result = result+1;
}
以此類推...

最後判斷答案是否一樣
if(result != f)
{
answer = false;
}

7.請問有幾題答案與題號有大於1的公因數
=>
第2題的公因數是2
第3題的公因數是3
第4題的公因數是2.4
第5題的公因數是5
第6題的公因數是2.3.4
第8題的公因數是2.4
第9題的公因數是3
第10題的公因數是2.4.5

result = 0
if(b == 2)
{
result = result +1
}
if(c == 3)
{
result = result +1
}
以此類推...

最後判斷答案是否一樣
if(result != g)
{
answer = false;
}

8.請問有幾題答案大於題號
=>因為答案只有1-5,所以只需要判斷1-4題
result = 0
if(a > 1)
{
result = result +1
}
if(b > 2)
{
result = result +1
}
以此類推...

最後判斷答案是否一樣
if(result != h)
{
answer = false;
}

9.已知所有答案總和為6的倍數。則本題答案為?
=>很簡單,全部加起來,之後再去判斷6的倍數
if( (a+b+c+d+e+f+g+h+i+j) % 6 != 0)
{
answer = false;
}

10.已知若兩相異題答案相同,則題號差為質數。則本題答案為?
=>如果依照題目的想法寫下去,會發現要寫很多
所以我反過來寫,不是質數的去掉

非質數的數字是1.4.6.8

所以第1題不能和(1+1)、(1+4)、(1+6)、(1+8)題的答案一樣
第2題不能和(2+1)、(2+4)、(2+6)、(2+8)題的答案一樣
...以此類推

result = 0
if(a = b or a = e or a = g or a = i)
{
answer = false;
}
if(b = c or b = f or b = h or b = j)
{
answer = false;
}
...以此類推

最後判斷答案是否一樣
if(result != j)
{
answer = false;
}

都做完了,之後剩下來的答案才是對的
if(answer = true)
{
print(a + " " + b + " " + c + " "......)
}

我要發表回答

立即登入回答