歐拉計劃 38

將192與1,2,3分別相乘得到:

192 × 1 = 192
192 × 2 = 384
192 × 3 = 576
將這三個乘積連接起來我們得到一個1到9的pandigital數, 192384576。我們稱 192384576是192和 (1,2,3)的連接積。

通過將9與1,2,3,4和5相乘也可以得到pandigital數:918273645,這個數是9和(1,2,3,4,5)的連接積。

用一個整數與1,2, … , n(n大於1)的連接積構造而成的1到9pandigital數中最大的是多少?

i_max = 0
for i in range(1, 10000):
    # 標誌位判斷1到9是否出現過
    flag_list = [0] * 9
    for j in range(1, 10):
        p = i * j
        while p > 0:
            j_p = p % 10
            if j_p == 0:
                break
            flag_list[j_p - 1] += 1
            if flag_list[j_p - 1] > 1:
                break            
            p //= 10
        if j_p == 0 or flag_list[j_p - 1] > 1:
            break
        if sum(flag_list) == 9:
            i_max = i
            break
print(i_max)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章