Задача №114525. Разность квадратов
Вы участвуете в разработке программного модуля для системы символьных вычислений. Модуль будет использоваться для решения специального вида диофантовых уравнений.
По заданному целому неотрицательному целому числу \(n\) разрабатываемый модуль должен найти два натуральных числа \(x\) и \(y\), для которых выполнено равенство \(x^2-y^2=n\). Найденные числа не должны превышать \(2^{62}-1\).
Требуется написать программу, которая по заданному целому неотрицательному числу \(n\) находит натуральные числа \(x\) и \(y\), не превышающие \(2^{62}-1\), разность квадратов которых равна \(n\).
В единственной строке дано одно целое число \(n\) (\(0 \le n \le 2^{60}\)).
Обратите внимание, что заданное во вводе число не помещается в 32-битный тип данных, необходимо использовать 64-битный тип данных (например, « long long » в C++, « int64 » в паскале, « long » в Java).
Если искомые \(x\) и \(y\) существуют, то необходимо вывести две строки: в первой строке выведите слово « Yes », а во второй — искомые \(x\) и \(y\).
Если подходящих пар \(x\) и \(y\) несколько, можно вывести любую из них, но должно выполняться условие \(1 \le x, y \le 2^{62}-1\).
Если решения нет, в единственной строке необходимо вывести слово « No ».
Баллы за каждую подзадачу начисляются только в случае, если все тесты для этой подзадачи и необходимых подзадач успешно пройдены.
Подзадача | Баллы | Ограничения | Необходимые подзадачи | Информация о проверке |
1 | 10 | \(0 \le n \le 2^{10}\) | полная | |
2 | 20 | \(0 \le n \le 2^{20}\) | 1 | полная |
3 | 30 | \(0 \le n \le 2^{30}\) | 1, 2 | полная |
4 | 40 | \(0 \le n \le 2^{60}\) | 1, 2, 3 | полная |
3
Yes 2 1
2
No