也玩有道难题的双立方数问题:Python 版解法
生活随笔
收集整理的這篇文章主要介紹了
也玩有道难题的双立方数问题:Python 版解法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
發現大家都在玩這個,用 python 寫了一個,計算一百萬之內的數字還是飛快的(包括結果打印)。
#coding:?utf-8"""
第二道算法題(500分)
題目要求:雙倍超立方數是指一個正整數可以正好被拆分為兩種不同的a^3+b^3的方式,
其中a,b均為整數且0<a<=b。對于任何一個指定的?int?n,?返回所有的小于等于n的雙倍超立方數的個數。
"""
def?find_double_cublic_number(max):
????cubs?=?[pow(i,3)?for?i?in?range(1,?int(round(pow(max,?1./3))))]
????#print?cubs
????sum_dict?=?{}
????result_list?=?[]
????length?=?len(cubs)
????for?i?in?range(length):
????????for?j?in?range(i?+?1,?length):
????????????sum?=?cubs[i]?+?cubs[j]
????????????if?sum_dict.has_key(sum)?and?sum?<=?max:
????????????????result_list.append(sum)
????????????????print?"%d^3?+?%d^3?=?%d"?%?(sum_dict[sum][0],?sum_dict[sum][1],?sum)
????????????????print?"%d^3?+?%d^3?=?%d"?%?(int(round(pow(cubs[i],?1./3))),?int(round(pow(cubs[j],?1./3))),?sum)
????????????else:
????????????????sum_dict[sum]?=?(int(round(pow(cubs[i],?1./3))),?int(round(pow(cubs[j],?1./3))))
????
????return?len(result_list)
if?__name__?==?'__main__':
????n?=?find_double_cublic_number(1000000)
????print?"--------------------------------\n"
????print?n,?"results?found."
????
?
輸出結果:
?
>pythonw?-u?"double_cubic_number.py"1^3?+?12^3?=?1729
9^3?+?10^3?=?1729
2^3?+?16^3?=?4104
9^3?+?15^3?=?4104
2^3?+?34^3?=?39312
15^3?+?33^3?=?39312
9^3?+?34^3?=?40033
16^3?+?33^3?=?40033
2^3?+?24^3?=?13832
18^3?+?20^3?=?13832
4^3?+?32^3?=?32832
18^3?+?30^3?=?32832
10^3?+?27^3?=?20683
19^3?+?24^3?=?20683
9^3?+?58^3?=?195841
22^3?+?57^3?=?195841
3^3?+?60^3?=?216027
22^3?+?59^3?=?216027
17^3?+?55^3?=?171288
24^3?+?54^3?=?171288
17^3?+?39^3?=?64232
26^3?+?36^3?=?64232
3^3?+?36^3?=?46683
27^3?+?30^3?=?46683
6^3?+?48^3?=?110808
27^3?+?45^3?=?110808
8^3?+?53^3?=?149389
29^3?+?50^3?=?149389
4^3?+?68^3?=?314496
30^3?+?66^3?=?314496
11^3?+?93^3?=?805688
30^3?+?92^3?=?805688
12^3?+?40^3?=?65728
31^3?+?33^3?=?65728
18^3?+?68^3?=?320264
32^3?+?66^3?=?320264
20^3?+?97^3?=?920673
33^3?+?96^3?=?920673
4^3?+?48^3?=?110656
36^3?+?40^3?=?110656
8^3?+?64^3?=?262656
36^3?+?60^3?=?262656
12^3?+?51^3?=?134379
38^3?+?43^3?=?134379
20^3?+?54^3?=?165464
38^3?+?48^3?=?165464
17^3?+?76^3?=?443889
38^3?+?73^3?=?443889
2^3?+?89^3?=?704977
41^3?+?86^3?=?704977
5^3?+?60^3?=?216125
45^3?+?50^3?=?216125
10^3?+?80^3?=?513000
45^3?+?75^3?=?513000
5^3?+?76^3?=?439101
48^3?+?69^3?=?439101
30^3?+?67^3?=?327763
51^3?+?58^3?=?327763
34^3?+?78^3?=?513856
52^3?+?72^3?=?513856
6^3?+?72^3?=?373464
54^3?+?60^3?=?373464
15^3?+?80^3?=?515375
54^3?+?71^3?=?515375
12^3?+?96^3?=?886464
54^3?+?90^3?=?886464
42^3?+?69^3?=?402597
56^3?+?61^3?=?402597
30^3?+?81^3?=?558441
57^3?+?72^3?=?558441
35^3?+?98^3?=?984067
59^3?+?92^3?=?984067
29^3?+?99^3?=?994688
60^3?+?92^3?=?994688
24^3?+?80^3?=?525824
62^3?+?66^3?=?525824
7^3?+?84^3?=?593047
63^3?+?70^3?=?593047
23^3?+?94^3?=?842751
63^3?+?84^3?=?842751
24^3?+?98^3?=?955016
63^3?+?89^3?=?955016
51^3?+?82^3?=?684019
64^3?+?75^3?=?684019
8^3?+?96^3?=?885248
72^3?+?80^3?=?885248
--------------------------------
43?results?found.
>Exit?code:?0
?
總結
以上是生活随笔為你收集整理的也玩有道难题的双立方数问题:Python 版解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SharePoint技术峰会2009视频
- 下一篇: 项目笔记一