Project Euler 39

来源:互联网 发布:部落冲突升级数据大全 编辑:程序博客网 时间:2024/05/20 18:16

没什么奇淫异术,直接暴力枚举……

也不能说是简单的枚举……


枚举c, 根据c的大小,枚举a,然后就可以算出b^2。判断 if b^2 == math.ceil(math.sqrt(b^2))**2

然后把f[a+b+c]的值加一就好了~

求出数组f中value最大的index就是我们要求的答案了~

import mathdef main():f = [0 for i in range(1001)]for i in range(1, 1000):c = i*ifor a in range(1, i):b = c - a*aif b<0:breaksqrt_b = math.ceil(math.sqrt(b))if i+a+sqrt_b>1000:breakif b == sqrt_b**2:f[i+a+sqrt_b] += 1max = 0x = 0for i in range(1001):if f[i]>=max:max = f[i]x = iprint(max, x)if __name__ == '__main__':main()


原创粉丝点击