题目要求:双倍超立方数是指一个正整数可以正好被拆分为两种不同的a^3+b^3的方式, 其中a,b均为整数且0<a<=b。对于任何一个指定的 int n, 返回所有的小于等于n的双倍超立方数的个数。
def double_cublic_number(n):
'''
因为0<a<=b,所以这里可以确定a和b一定小于n的三次方根
'''
p = int(pow(n,1.0/3)) + 1;
xr = xrange(1,p);
cubs = map(lambda x:x*x*x,xrange(0,p));
return filter(lambda m:m[0]<m[1] and m[2]<=n,((x,y,cubs[x]+cubs[y]) for x in xr for y in xr));
n = 100000
result = double_cublic_number(n);
result.sort(lambda l,r:l[2]-r[2])
for item in result:
print "%d^3 + %d^3 = %d"%item
print "%d results found"%len(result)