题目地址
解决的方法很简单就是判定。
要做笔记的地方就是是不是一定需要用双重循环?
在第二次做的时候想到的时二重循环,就是复杂度为O(n ^ 2), 有20000 - 2个数,起码要算接近20000 * 20000 次,肯定超时。
回去看第一次解决的代码,只用了一重循环,因为已经知道了和 同 积,这个就很重要了,就少算很多那些和不等的数了,直切要害。厉害。
***是不是一定要二重循环?先想一下这个问题
代码
#include <iostream>
using namespace std;
int main() {
int n, m;
while(cin >> n >> m && (n || m)) {
bool flag = 0;
for(int i = -9999; i < 10000; i++) {
int j = n - i;
if(j * i == m) {
cout << "Yes" << endl;
flag = 1;
break;
}
}
if(!flag) {
cout << "No" << endl;
}
}
return 0;
}