也玩有道难题的双立方数问题:Python 版解法

发现大家都在玩这个,用 python 写了一个,计算一百万之内的数字还是飞快的(包括结果打印)。

# coding: utf-8

"""
第二道算法题(500分)

题目要求:双倍超立方数是指一个正整数可以正好被拆分为两种不同的a^3+b^3的方式,
其中a,b均为整数且0
"""

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  - " 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,python,list,算法,编程)