题目描述:
给你两个整数a和b(-10000<a,b<10000),请你判断是否存在两个整数,他们的和为a,乘积为b。
若存在,输出Yes,否则输出No
示例:
输入:a = 9 b = 15
输出:No
例如:a=9,b=15, 此时不存在两个整数满足上述条件,所以应该输出No。
分析:
这个题目的描述有一点的问题,好吧,是问题很大。
现在我们再来看看这一个题目,我们小小的思考一下。我们的第一想法是什么? 我们这样去做兴许是可以的,毕竟我们的数据量相对于而言不是很大。
但是如果我们尝试 循环两个数的话,那这样的计算量就比较大了。 示例代码:
1
2
3
4
for i in range(-10000, 10000):
for j in range(-10000, 10000):
if i + j == a and i * j == b:
# 得到的最后解
这样的话循环次数就有点点多了。
再想一想,其实我们得到一个解的时候,我们就可以得到第二个数。 假如现在的两个数是 x, y
当我们知道 x 的时候,那么 y = a - x
。
代码:
1
2
3
4
5
6
7
8
9
10
11
flag = "No"
for it in range(-10000, 10000):
if it == 0:
continue
if b % it == 0:
if (it + b // it) == a:
flag = "Yes"
if b == 0:
flag = "Yes"
print(flag)