1. 程式人生 > 其它 >藍橋杯每日一題(2):維納猜年齡(python)

藍橋杯每日一題(2):維納猜年齡(python)

技術標籤:藍橋杯pythonpython列表字串

Topic:

美國數學家維納(N.Wiener)智力早熟,11歲就上了大學。他曾在1935~1936年應邀來中國清華大學講學。
一次,他參加某個重要會議,年輕的臉孔引人注目。於是有人詢問他的年齡,他回答說:
“我年齡的立方是個4位數。我年齡的4次方是個6位數。這10個數字正好包含了從0到9這10個數字,每個都恰好出現1次。”
請你推算一下,他當時到底有多年輕。

Solution:

運用反解思想
10的3次方是4位數
30的3次方是五位數
所以維納的年齡在10到30之間
進行一一比較
首先建立一個包含0-9的列表
從10開始
嘗試對每一次查詢的年齡的三次方和四次方

年齡的每一位與0-9比對
將每一次比對的結果刪除
若最後列表為空則0-9中全部刪除
則此年齡就是維納當時的年齡

Code:

for i in range(10, 30):
    number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    age_1 = list(str(i ** 3))
    age_2 = list(str(i ** 4))

    for j in age_1:
        try:
            number.remove(int(j))
        except:
            pass
        else:
pass for y in age_2: try: number.remove(int(y)) except: pass else: pass if not number: print(i) break

Answer:
在這裡插入圖片描述