Здравствуйте,несколько дней решаю задачу,но всё никак не получается:
Теорема Лагранжа утверждает, что любое натуральное число можно представить в виде суммы не более, чем четырех точных квадратов. По данному числy N выведите от 1 до 4 натуральных чисел, квадраты которых в сумме дают значение N.
Входные данные
Вводится натуральное число N
10000.
Выходные данные
Выведите ответ на задачу.
Решение прошло 90 тестов из 99(выдаёт,что неправильный ответ).Путём подбора и угадывания тестов кое-как смог "добить" до 97,но дальше n > 1000 и смысла перебирать оставшиеся числа я не вижу.Может быть можно как-то доработать или переделать программу.
Python 3.7
OC: Windows
Теорема Лагранжа утверждает, что любое натуральное число можно представить в виде суммы не более, чем четырех точных квадратов. По данному числy N выведите от 1 до 4 натуральных чисел, квадраты которых в сумме дают значение N.
Входные данные
Вводится натуральное число N

Выходные данные
Выведите ответ на задачу.
Python:
n = int(input())
a = n
s = [0 for i in range(0, 4)]
for i in range(4):
s[i] = int(n ** 0.5)
n = n - s[i] ** 2
if s[0] ** 2 + s[1] ** 2 + s[2] ** 2 + s[3] ** 2 == a:
for d in range(4):
if s[d] != 0:
print(s[d])
else:
s[0] -= 1
x = a - s[0] ** 2
if s[0] != 0:
print(s[0])
for j in range(1, 4):
s[j] = int(x ** 0.5)
x = x - s[j] ** 2
if s[j] != 0:
print(s[j])
Python 3.7
OC: Windows