教育的な約数列挙問題!!
問題概要
2 つの正の整数 が与えられます。
を満たす正の整数 が存在するかどうかを判定せよ。
制約
考えたこと
として、 の約数のみを考えれば OK。そして を決めると は と決まる。 となることがあるかどうかを判定すれば OK。
約数を列挙するのは でできる!
#include <bits/stdc++.h> using namespace std; int main() { long long S, P; cin >> S >> P; auto solve = [&]() -> bool { for (long long M = 1; M * M <= P; ++M) { if (P % M == 0 && M + P/M == S) return true; } return false; }; cout << (solve() ? "Yes" : "No") << endl; }