題目描述
美國數學家維納(N.Wiener)智力早熟,11歲就上了大學。他曾在1935~1936年應邀來中國清華大學講學。一次,他參加某個重要會議,年輕的臉孔引人注目。於是有人詢問他的年齡,他回答說:“我年齡的立方是個4位數。我年齡的4次方是個6位數。這10個數字正好包含了從0到9這10個數字,每個都恰好出現1次。” 請編程輸出當年維納的年齡。
思路
先if...else...語句,對數字范圍限制,分別將年齡i的三次方的個位、十位、百位、千位數分別添加到空列表L1中,將年齡i的四次方的個位、十位、百位、千位、萬位、十萬位數添加到空列表L2中。對L1、L2兩個列表進行合並去重,去重的時候用set()得到L4,對L4,L3進行排序sort()(這一點是關鍵,比較菜卡在這半天),最後,對比L4是否等於L3。輸出年齡i.
L1 = []
L2 = []
L4 = []
L3 = [0,1,2,3,4,5,6,7,8,9]
for i in range(0, 101):
if(i**3>=1000 and i**3<=9999 and i**4>=100000 and i**4<=999999):
L1.append((i**3)%10)
L1.append((i**3)/10%10)
L1.append((i**3)/100%10)
L1.append((i**3)/1000%10)
L2.append((i**4)%10)
L2.append((i**4)/10%10)
L2.append((i**4)/100%10)
L2.append((i**4)/1000%10)
L2.append((i**4)/10000%10)
L2.append((i**4)/100000%10)
L4 = L1 +L2
L4 = list(set(L4))
L4 = L4.sort()
L3 = L3.sort()
if(L4 == L3):
print(i)
break
else:
print(i)
continue
else:
continue
這個方法比較笨僅供參考(有好的方法評論區交流互相學習一下 嘿嘿嘿)