2015年第六届蓝桥杯 - 省赛 - C/C++大学A组 - A. 方程整数解
一、题目描述
二、解题:
借用了一下leetcode两数之和的思想:
因为平方和不大于1000,且所求为整数,所以遍历的范围大致定在 ( − 50 , 50 ) (-50,50) (−50,50)之间( 5 0 2 = 2500 > 1000 50^2 = 2500 > 1000 502=2500>1000)
这个区间显然有不少冗余,所以我们先通过剪枝进一步缩小区间
再借助带else子句的循环语句实现“得到结果后及时终止程序”的功能
最后输出结果
三、代码:
for a in range(-50,50):
if a**2 > 1000: continue
for b in range(a, 50):
dif = 1000-a**2-b**2
if dif < 0: continue
if (dif**0.5)*10%10 == 0:
print(min(a,b,dif**0.5),a,b,dif**0.5)
break
else:
continue
break