小明是個急性子,上小學的時候經常把老師寫在黑板上的題目抄錯了。直接暴力解法有一次,老師出的題目是:36 x 495 = ?
他卻給抄成了:396 x 45 = ?
但結果卻很戲劇性,他的答案竟然是對的!!
因為 36 * 495 = 396 * 45 = 17820
類似這樣的巧合情況可能還有很多,比如:27 * 594 = 297 * 54
假設 a b c d e 代表1~9不同的5個數字(注意是各不相同的數字,且不含0)
能滿足形如: ab * cde = adb * ce 這樣的算式一共有多少種呢?
請你利用計算機的優勢尋找所有的可能,並回答不同算式的種類數。
滿足乘法交換律的算式計為不同的種類,所以答案肯定是個偶數。
將a, b, c, d. e按照0 — 9 全部排列出來
加上篩選條件:
(1)a, b, c, d, e均表示不同數字(不相等)
(2)滿足 ab * cde = adb * ce 這樣的算式(按照位數乘10的n次方)
滿足兩項條件的結果res + 1
res =
0for a in
range(1
,10):
for b in
range(1
,10):
for c in
range(1
,10):
for d in
range(1
,10):
for e in
range(1
,10):
if a != b and a != c and a != d and a != e and b != c and b != d and b != e and c != d and c != e \
and d != e and
(a *
10+ b)
*(c *
100+ d *
10+ e)
==(a *
100+ d *
10+ b)*(
c *10+ e)
: res +=
1print
(res)
運用itertools模組進行簡化
首先運用permutations所有元素排列出5位數字全排列的所有可能情況
之後如果滿足 ab * cde = adb * ce 這樣的算式(按照位數乘10的n次方)
就讓res += 1
import itertools
res =
0x = itertools.permutations(
[i for i in
range(1
,10)]
,5)for j in x:
if(j[0]
*10+ j[1]
)*(j[2]*
100+ j[3]
*10+j [4]
)==(j[0]*
100+ j[3]
*10+ j[1]
)*(10
* j[2]
+ j[4]
):res +=
1print
(res)
藍橋杯 馬虎的算式
小明是個急性子,上小學的時候經常把老師寫在黑板上的題目抄錯了。有一次,老師出的題目是 36 x 495 他卻給抄成了 396 x 45 但結果卻很戲劇性,他的答案竟然是對的!因為 36 495 396 45 17820 類似這樣的巧合情況可能還有很多,比如 27 594 297 54 假設 a b ...
藍橋杯 馬虎的算式
題目描述 小明是個急性子,上小學的時候經常把老師寫在黑板上的題目抄錯了。有一次,老師出的題目是 36 x 495 他卻給抄成了 396 x 45 但結果卻很戲劇性,他的答案竟然是對的!因為 36 495 396 45 17820 類似這樣的巧合情況可能還有很多,比如 27 594 297 54 假設...
藍橋杯歷屆真題 馬虎的算式
小明是個急性子,上小學的時候經常把老師寫在黑板上的題目抄錯了。有一次,老師出的題目是 36 x 495 他卻給抄成了 396 x 45 但結果卻很戲劇性,他的答案竟然是對的!因為 36 495 396 45 17820 類似這樣的巧合情況可能還有很多,比如 27 594 297 54 假設 a b ...