[原題]http://www.shiyanbar.com/ctf/1859
方案一:用時6.7s宪彩。
整理成:x=(400*y)/(y-200),得到y(tǒng)下限200,x=y時喳资,得到y(tǒng)上限600
當(dāng)y=599,求x下限為600.50多宜鸯,取整601憔古,當(dāng)y=201,x為最大值80400。
count = 0
for x in range(601,80401):
for y in range(201,600):
if (1/x)+(1/(2*y))==(1/400):
count += 1
print(count)
方案二:用時0.1s
整理成:x=(400*y)/(y-200)淋袖,得到y(tǒng)下限200鸿市,x=y時,得到y(tǒng)上限600,直接利用等式求解即碗,優(yōu)化速度焰情。盡量減少用迭代器,降低計(jì)算維度剥懒。
count = 0
for y in range(201,600):
if (400*y)%(y-200)==0: #x=(400*y)/(y-200)内舟,因?yàn)閤為整數(shù),所以(400*y)%(y-200)==0
count += 1
print (count)