0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 2

Как ускорить данный код на Python?

22.03.2022, 14:13. Показов 1235. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from sys import setrecursionlimit
n=int(input())
result=0
setrecursionlimit(1000)
def count(n,k=1):
    if n==0:
        global result
        result+=1
    for i in range(k,n+1):
        if i%2!=0:
            count(n-i,i)
count(n)
print("Результат:",result)
Есть данный код, но он работает медленно , хочу его ускорить.
Требуемые значения:
1 <= n <= 1000
1 секунда
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2022, 14:13
Ответы с готовыми решениями:

Добрый вечер, как ускорить данный код
функция получает в себя имя файла с картинкой и расстояние, на которое надо сдвинуть изображение c красной составляющей вправо, чтобы...

Как интерпретировать данный код из Python в PascalABC?
Results = {} def gameResult( x, y ): if (x,y) in results: return results if x + y &gt;= TARGET: return 0 ...

Как данный код конвертнуть с языка программирования PYTHON в C#?
def height(man): if man not in p_tree: return 0 else: return 1 + height(p_tree) p_tree = {} n =...

3
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
22.03.2022, 19:08
задача какая?
0
0 / 0 / 0
Регистрация: 22.03.2022
Сообщений: 2
22.03.2022, 19:30  [ТС]
Вычислить количество вариантов разложения числа на нечётные числа, которые меньше или равные ему самому.
Например для 5 будет 3 способа
Для 16 будет 32 способа
Для 47 будет 2590
Для 100 будет 444793

Но нужно , чтобы код считал для 1000 за 1 секунду
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
22.03.2022, 21:53
Лучший ответ Сообщение было отмечено volandd0v как решение

Решение

Цитата Сообщение от volandd0v Посмотреть сообщение
Но нужно , чтобы код считал для 1000 за 1 секунду
Ты уверен что эта цифра для Python?
Для 1000 существует вот столько вариантов разложений: 8635565795744155161506

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
>>> def compose(n:int):
    counts = [0] * (n+1)
    counts[0] = 1
    m = 1
    for m in range(1, n+1, 2):
        for i in range(m,len(counts)):
            counts[i] += counts[i-m]
            
    return counts[n]
 
>>> compose(5)
3
>>> compose(16)
32
>>> compose(47)
2590
>>> compose(100)
444793
>>> import time; start = time.time(); compose(1000); print(time.time() - start)
8635565795744155161506
0.07800006866455078
>>> import time; start = time.time(); compose(100); print(time.time() - start)
444793
0.031200170516967773
>>>
Время вычисления здесь чистой воды обман: просто после первого запуска функции все циферки оказались в кэше процессора и теперь считается за доли секунды :-)

Нужно будет потом по другому проверить....

Добавлено через 1 час 9 минут
Цитата Сообщение от Garry Galler Посмотреть сообщение
Время вычисления здесь чистой воды обман
Впрочем, нет. Замедление при первом запуске кода у меня было, видимо, по иной причине. После перезагрузки системы показатели скорости выполнения кода для первого запуска остались вполне быстрыми, как и те, что приводились выше:
Python
1
2
%timeit -r 10 -n 10 compose(1000)
69.7 ms ± 901 µs per loop (mean ± std. dev. of 10 runs, 10 loops each)
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.03.2022, 21:53
Помогаю со студенческими работами здесь

Ускорить код на Python
Всем привет. Нужна помощь сообщества. Посмотрите пожалуйста код и подскажите где его можно ускорить. Использую: Python, OpenCV,...

Как ускорить данный алгоритм нахождения минимума на отрезке?
Здравствуйте, подскажите, пожалуйста, почему решение не проходит по времени на нескольких тестах? Как исправить это? Рассмотрим...

Объясните, пожалуйста, данный код на python
n = int(input()) if n % 2 == 0: n -= 1 for i in range(n, 1, -2): print(i)

Не работает вся оперативка и как можно максимально ускорить данный ПК
Всем привет! :) Друзья, подскажите пожалуйста новичку - почему комп не использует всю оперативку? Установлено 6, а использует 4. И что...

Перевести данный код паскаля в c# , c++ или Python на ваше усмотрение
Нужно перевести код паскаля в c# , c++ или Python на ваше усмотрение буду очень благодарен uses crt; function F(x:real):real; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru