Дано 2 положительных целых числа c и n. Найдите любые 2 положительных целых числа ответа для x и y, которые удовлетворяют следующему уравнению: √x + √y = √z, где z = c²n.
Ввод
Первая строка входных данных содержит одно целое число t (1≤t≤105) , число тестовых случаев. Первая и единственная строка каждого тестового примера состоит из двух целых чисел, разделенных пробелами c и n (4可c²n可1018, 2可c可10 9, 1≤n≤109)
Вывод
Для каждого тестового примера выведите 2 пробела -отдельный позитив целые числа x и y — ответ на уравнение.
Если ответов несколько, выведите любой.
Я пытался сделать y = n, а затем вычислить x квадратичным анализом:
√x + √y = c*√n
=> x + 2√y√x + y = c²n
=> x + 2√y√x + y - c²n =0
Затем я вычислил x с помощью квадратичного анализа:
=> x = (-b + √(b² - 4ac))/2a
Примечание: ограничение по времени для этой задачи составляет 1,3 секунды, что означает, что в худший случай я не следует использовать более 1010 или 1011 шагов.
Код: Выделить всё
#include
#include
using namespace std;
int main()
{
int t, n , c;
double x, num1, num2;
cin >> t;
for(int i=0; i> c >> n;
num1 = (double)n - (pow(c, 2)*n);
num2 = (double) ((-2*sqrt(n))+sqrt((4*n)-(4*num1)))/2;
cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79309727/can-i-solve-this-equation-without-looping-for-each-value-of-x-and-y[/url]
Мобильная версия