题解:P11496 [ROIR 2019 Day 1] 完全平方
思路:
如果是零,那答案也为零,因为零是完全平方数。
如果小于零,那么就把
如果大于零,也用平方差公式,枚举出最小值。
code:
#include <bits/stdc++.h>
#define int long long
using namespace std;
int k, ans = 0;
bool flag = 0;
signed main() {
cin >> k;
if (k == 0) cout << 0;
else {
if (k < 0) {
k = -k;
flag = true;
}
for (int i = 1; (long long)i * i <= k; i++) {
if (k % i == 0 && i % 2 == (k / i) % 2) ans = i;
}
if (ans == 0) cout << "none";
else cout << ((!flag) ? ((ans + k / ans) / 2) : ((k / ans - ans) / 2)) << endl;
}
return 0;
}