Олимпиадный тренинг

Задача . Число, как сумма двух ближайших квадратов


Задача

Темы:
 
Дано натуральное число n.
Требуется найти два различных натуральных числа x,y таких что:
  • x2+y2 = n
  • x < y и y - x имеет минимальное возможное значение
Например, если n равно 145, то ответом будет пара чисел (12, 1). (это единственное представление).
Например, для n = 50 , то ответом будет (1, 7), хотя есть и другое представление  суммой квадратов:  (5, 5). ((5,5) не удовлетворяет условию различные).
Например, для n = 10000 то ответом будет (18, 26), хотя и другое предстваление (10, 30). (разница между 30 и 10 больше чем у 26 и 18) 

Ваша задача: написать функцию get_squares_summing_to_n, которая
принимает положительное целое число n и возвращает два числа (возрастающих), сумма квадратов которых равна n.
Если таких чисел нет, функция должна вернуть None.
В табл. 2.19 показаны ожидаемые результаты для некоторых входных данных.
Таблица 2.19. Некоторые ожидаемые результаты для задачи суммы двух квадратов
n Ожидаемый результат
50 1 7
145 1 12
1000 18 26
540 None
 
 

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
Комментарий учителя