Объектно-ориентированное программирование (ООП) применяется для облегчения процесса создания управляемых проектов.
Процедурный подход подразумевает написание программного кода без использования объектов.
Объекты - это отдельная маленькая часть кода, которая может объединять данные и свойства вместе. В приложениях все объекты взаимодействуют друг с другом.
ООП обучает любой язык программирования более легкому для восприятия программному коду и используется, для увеличения производительности и упрощения навигации при работе с большими проектами.
ООП даёт возможность создавать объекты, которые можно будет использовать в своих проектах многократно, что упрощает написание и управление большими приложениями
Вам нужно найти такие a и b, что a + b = x и ab = y. По теореме Виета a и b - корни уравнения . Находим дискриминант , если он отрицательный - у уравнения не то что натуральных, действительных решений нет. Если дискриминант неотрицательный, но не полный квадрат, то натуральных решений тоже нет. Иначе решения уравнения , если они натуральные - это и есть ответ.
У меня нет уверенности, что можно посчитать целый корень из большого натурального числа с стандартных функций, так что напишу свою реализацию на основе двоичного поиска.
Объяснение:
Объектно-ориентированное программирование (ООП) применяется для облегчения процесса создания управляемых проектов.
Процедурный подход подразумевает написание программного кода без использования объектов.
Объекты - это отдельная маленькая часть кода, которая может объединять данные и свойства вместе. В приложениях все объекты взаимодействуют друг с другом.
ООП обучает любой язык программирования более легкому для восприятия программному коду и используется, для увеличения производительности и упрощения навигации при работе с большими проектами.
ООП даёт возможность создавать объекты, которые можно будет использовать в своих проектах многократно, что упрощает написание и управление большими приложениями
Вам нужно найти такие a и b, что a + b = x и ab = y. По теореме Виета a и b - корни уравнения
. Находим дискриминант
, если он отрицательный - у уравнения не то что натуральных, действительных решений нет. Если дискриминант неотрицательный, но не полный квадрат, то натуральных решений тоже нет. Иначе решения уравнения
, если они натуральные - это и есть ответ.
У меня нет уверенности, что можно посчитать целый корень из большого натурального числа с стандартных функций, так что напишу свою реализацию на основе двоичного поиска.
#include <iostream>
#include <cmath>
long long isqrt(long long number) {
long long answer = 0, left = 0, right = 1e9;
while (left <= right) {
long long middle = (left + right) / 2;
long long middle_squared = middle * middle;
if (middle_squared == number) {
return middle;
} else if (middle_squared < number) {
answer = middle;
left = middle + 1;
} else {
right = middle - 1;
}
}
return answer;
}
int main() {
long long x, y;
std::cin >> x >> y;
auto d = x * x - 4 * y;
if (d < 0) {
std::cout << 0;
return 0;
}
auto sqrt_d = isqrt(d);
if (sqrt_d * sqrt_d != d) {
std::cout << 0;
return 0;
}
if ((x - sqrt_d) % 2 != 0) {
std::cout << 0;
return 0;
}
std::cout << (x - sqrt_d) / 2 << " " << (x + sqrt_d) / 2;
}