由4個不同的數字,組成的乙個乘法算式,它們的乘積仍然由這4個數字組成。
比如:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
都符合要求。
如果滿足乘法交換律的算式算作同一種情況,那麼,包含上邊已列出的3種情況,一共有多少種滿足要求的算式。
請填寫該數字,通過瀏覽器提交答案,不要填寫多餘內容(例如:列出所有算式)。
————————————————
這題的題目要求:
1:4個不同的數字
2:由題目知,乘法算式主要有兩種情況:第一種,1位數乘3位數
第二種,2位數乘2位數
對於情況一:abcd=abcd這樣的形式
1位數的a,取值範圍為:0-9
3位數的bcd,取值範圍為有: b的取值範圍:1-9
c的取值範圍:0-9
d的取值範圍:0-9
這樣bcd組合起來的就能匹配 100-999這個範圍的所有三位數
對於情況二:abcd這樣的形式:
2位數的ab,取值範圍有: a的取值範圍:1-9
b的取值範圍:0-9
同理2位數的cd,取值範圍有: c的取值範圍:1-9
d的取值範圍:0-9
這樣ab或者cd組合起來就能匹配10-99這個範圍的所有二位數
且:滿足乘法交換律的算式算作同一種情況,那麼,
總情況=情況一+(情況二/2) 注:因為2位數*2位數會出現滿足乘法交換律的算式,所以要除以2
3:要判斷—》由4個不同的數字,組成的乙個乘法算式,它們的乘積仍然由這4個數字組成。
可以將轉化為字串再轉化為set(),用集合的判等就能判斷
萬物基於暴力法:
con_13=
0for a in
range(2
,10):
#因為1*三位數是不可能等於乙個四位數,所以a=1這種情況不存在
for b in
range(1
,10):
if b==a:
continue
#當出現相同的兩個數字的時候跳過此次迴圈。
for c in
range(0
,10):
if c==a or c==b:
continue
for d in
range(0
,10):
if d==a or d==a or d==c:
continue
sr1=
str(a)
+str
(b)+
str(c)
+str
(d)#這裡是等號前面的轉換為字串
sr2=
str(a*
int(
str(b)
+str
(c)+
str(d)))
#這裡是等號後面的轉換為
ifset
(sr1)
==set
(sr2)
:#利用set()判斷兩個是不是同一集合
con_13+=
1con_22=
0for a in
range(1
,10):
for b in
range(0
,10):
if b==a:
continue
for c in
range(1
,10):
if c==a or c==b:
continue
for d in
range(0
,10):
if d==a or d==a or d==c:
continue
sr1=
str(a)
+str
(b)+
str(c)
+str
(d)
sr2=
str(
int(
str(a)
+str
(b))
*int
(str
(c)+
str(d)))
ifset
(sr1)
==set
(sr2)
: con_22+=
1print
(con_13+con_22//2)
#con_13為情況一的,con_22為情況2的
藍橋杯 神奇算式
由4個不同的數字,組成的乙個乘法算式,它們的乘積仍然由這4個數字組成。比如 6 x 210 1260 8 x 473 3784 27 x 81 2187 都符合要求。如果滿足乘法交換律的算式算作同一種情況,那麼,包含上邊已列出的3種情況,請輸出剩餘的滿足要求的算式且按照第乙個因數從小到大排列,第乙個...
神奇算式 藍橋杯
原創 神奇算式 藍橋杯 摘要 本題是2014年第五屆藍橋杯全國軟體大賽預賽a組第3題。由4個不同的數字,組成的乙個乘法算式,它們的乘積仍然由這4個數字組成。比如 210 x 6 1260 8 x 473 3784 27 x 81 2187都符合要求。如果滿足乘法交換律的算式算作同一種情況,那麼,包含...
藍橋杯 神奇算式(C )
由4個不同的數字,組成的乙個乘法算式,它們的乘積仍然由這4個數字組成。比如 210 x 6 1260 8 x 473 3784 27 x 81 2187 都符合要求。如果滿足乘法交換律的算式算作同一種情況,那麼,包含上邊已列出的3種情況,一共有多少種滿足要求的算式。直接暴力然後再驗證。等式分兩位數相...