Ваша задача - преобразовать десятичные дроби обратно в сумму квадратных корней целых чисел. Результат должен иметь точность не менее 6 значащих десятичных цифр.
Вход :
Число, указывающее количество квадратных корней, и десятичное число, указывающее число для аппроксимации.
Пример ввода:
2 3.414213562373095
Вывод : целые числа, разделенные пробелами, которые при квадратном корне и сложении приблизительно соответствуют исходному десятичному знаку с точностью не менее 6 значащих десятичных знаков.
Нули не допускаются в решении.
Если есть несколько решений, вам нужно распечатать только одно.
Пример вывода (в любом порядке):
4 2
Это работает, потому что Math.sqrt(4) + Math.sqrt(2) == 3.414213562373095
.
Это код гольф. Самый короткий код (с дополнительным бонусом) выигрывает!
Всегда будет решение, но -10, если ваша программа выводит «Нет», когда нет решения с целыми числами. Кроме того, -10, если ваша программа печатает все решения (разделенные символом новой строки или точкой с запятой или что-то еще) вместо одного.
Тестовые случаи:
3 7.923668178593959 --> 6 7 8
2 2.8284271247461903 --> 2 2
5 5.0 --> 1 1 1 1 1
5 13.0 --> 4 4 9 9 9 --> 81 1 1 1 1 --> 36 9 4 1 1 etc. [print any, but print all for the "all solutions bonus"]
И да, ваша программа должна завершиться за конечное время, используя ограниченную память на любой разумной машине. Это не может просто работать «в теории», вы должны быть в состоянии действительно проверить это.
6 7 8
второго бонуса?