Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2020 18:26:56

al_orange
Зарегистрирован: 2020-04-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Теорема Лагранжа

Без рекурсии неинтересно.)

Сделала с ней, но числа после 511 не канают, не хватают, а должны до 10000 раскладываться

Офлайн

#2 Апрель 19, 2020 00:39:27

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9731
Репутация: +  843  -
Профиль   Отправить e-mail  

Теорема Лагранжа

al_orange
а должны до 10000 раскладываться
Мой вариант до 1000000 раскладывает с задержкой в секунд тридцать.

al_orange
Сделала с ней, но числа после 511 не канают, не хватают
А ты сделай
  
>>> import sys
>>> 
>>> sys.setrecursionlimit(1000000000)
>>>



Офлайн

#3 Апрель 19, 2020 04:04:31

al_orange
Зарегистрирован: 2020-04-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Теорема Лагранжа

py.user.next
с задержкой в секунд тридцать
попробуй сравнить скорость с таким вариантом, как на скрине в след сообщении.

я там ограничения на максимумы поставила; вообще же, если залезть в теорему, то можно найти и ограничения для минимумов:
a_min = ceil((n / 4)**0.5)
b_min = ceil(((n - a**2)/3)**0.5)
c_min = ceil(((n - a**2 - b**2)/2)**0.5)
не получилось пока их впихнуть в код выше (особо не старлась), но оно точно увеличит скорость.
(для проверки можно 7168 юзать, ответ: 80 16 16 16, не 48 48 48 16)

так или иначе, это все не рекурсивные решения ((
dirty trick из-за памяти в общем случае тоже. навеное, не классное решение.

Отредактировано al_orange (Апрель 19, 2020 04:08:29)

Офлайн

#4 Апрель 19, 2020 04:06:57

al_orange
Зарегистрирован: 2020-04-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Теорема Лагранжа

.

Прикреплённый файлы:
attachment tmp.png (35,1 KБ)

Офлайн

#5 Апрель 19, 2020 04:53:25

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9731
Репутация: +  843  -
Профиль   Отправить e-mail  

Теорема Лагранжа

al_orange
для проверки можно 7168 юзать, ответ: 80 16 16 16, не 48 48 48 16
  
>>> import lagsq
>>> 
>>> lagsq.find_lagrange_squares(7168)
(80, 16, 16, 16)
>>>

al_orange
Прикреплённый файлы:
attachment tmp.png (35,1 KБ)
Там код топикстартера. Вот этот бери.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version