Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
4 / 4 / 2
Регистрация: 27.08.2023
Сообщений: 106

Как оптимизировать программу?

15.10.2023, 23:19. Показов 738. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Суть в том, что мы ищем билеты с одинаковой суммой цифр левой и правой части, прога оч долгая. Нужно что-то урезать, ну а я не знаю что тут резать.
Код:
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
26
27
28
29
30
31
32
33
n = int(input())
n1 = ""
n2 = ""
res = 0
res1 = 0
res2 = 0
if n%2 != 0 and n != 1:
    for i in range(10**(n-1), 10**n):
        n1 = str(i)[:n//2]
        n2 = str(i)[n//2+1:]
        for j in range(len(n1)):
            res1 += int(n1[j])
            res2 += int(n2[j])
        if res1 == res2:
            res += 1
            print(i, n1, n2, res1, res2, res)
        res1 = 0 
        res2 = 0
elif n%2 == 0 and n != 1:
    for i in range(10**(n-1), 10**n):
        n1 = str(i)[:n//2]
        n2 = str(i)[n//2:]
        for j in range(len(n1)):
            res1 += int(n1[j])
            res2 += int(n2[j])
        if res1 == res2:
            res += 1
            print(i, n1, n2, res1, res2, res)
        res1 = 0 
        res2 = 0
else:
    res = 9
print(res)
Или мб на с++ его переписать. ¯\_(ツ)_/¯
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.10.2023, 23:19
Ответы с готовыми решениями:

Как можно оптимизировать программу 'Адресная книга'?
Мне нужно опыт! Поэтому скажите,как можно улучшить мой далеко не самый продуманный код class ab: all = 0 file = 'adres_book.txt'...

Как Оптимизировать программу
Есть кодТДБФ1 = Новый XBase; ТДБФ1.Кодировка = КодировкаXBase.OEM; ТДБФ2 = Новый XBase; ТДБФ2.Кодировка = КодировкаXBase.OEM; ...

Как оптимизировать программу?
Программа предназначена для отбора существительных методом перебора (других способов найти не удалось) Суть в том, что словарь очень...

11
1956 / 874 / 352
Регистрация: 05.09.2021
Сообщений: 1,387
16.10.2023, 01:14
Cookien, Вот попробуйте. Хотя это далеко не самый быстрый вариант.
Python
1
2
3
4
5
6
7
8
9
10
11
n = int(input())
p = n // 2 + 1 if n % 2 else n // 2
 
s = (str(i) for i in range(10 ** (n - 1), 10 ** n))
c = 0
for v in s:
    if sum(map(int, v[:n // 2])) == sum(map(int, v[p:])):
        c += 1
        m = sum(map(int, v[:n // 2]))
        print(v, v[:n // 2], v[p:], m, m, c)
print(c)
Добавлено через 18 минут
Cookien, Вот так должно быть быстрее.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
n = int(input())
p = 10 ** (n // 2 + 1) if n % 2 else 10 ** (n // 2)
 
c = 0
for i in range(10 ** (n - 1), 10 ** n):
    a = a_t = i // p
    b = b_t = i % 10 ** (n // 2)
    
    a_s = 0
    while a_t:
        a_s += a_t % 10
        a_t //= 10
    
    b_s = 0
    while b_t:
        b_s += b_t % 10
        b_t //= 10
        
    if a_s == b_s:
        c += 1
        print(i, a, b, a_s, b_s, c)
        
print(c)
P.S. Нейминг переменных ужасный, но что-то в голову ничего красивого не пришло.
0
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
16.10.2023, 02:06
Цитата Сообщение от Cookien Посмотреть сообщение
Нужно что-то урезать, ну а я не знаю что тут резать.
Всё...
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
16.10.2023, 11:00
Тут надо полностью менять алгоритм.
Попробуйте так:
Пусть у нас есть 2n-значное число. По k от 1 от 1 до 9n формируете n-значные числа с суммой цифр равной k.
Пусть https://www.cyberforum.ru/cgi-bin/latex.cgi?S_k - множество n-значных чисел с суммой цифр, равной k. Тогда счастливые числа формируются по декартовому произведению:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\bigcup_{k}S_k \times S_k<br />
- каждому числу с суммой цифр, равной k, выбирается другое число с той же суммой цифр. Выбранные числа затем склеиваются

Добавлено через 10 минут
Если же число 2n+1 - значное, то формируете список 2n-значных и вставляете в середину цифры от 0 до 9
0
16.10.2023, 11:09

Не по теме:

Red white socks, а есть на Литкоде такая задачка? Что-то никак не выходит найти.

0
16.10.2023, 11:24

Не по теме:

Arsegg, не большой спец по литкоду, но по поиску тоже не нашел.

0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
16.10.2023, 13:15
Цитата Сообщение от Cookien Посмотреть сообщение
мы ищем билеты с одинаковой суммой цифр левой и правой части
так билет сколько имеет цифр? это количество строго соблюдается?
0
4 / 4 / 2
Регистрация: 27.08.2023
Сообщений: 106
18.10.2023, 20:26  [ТС]
Ципихович Эндрю, n значное число, т.е. если n = 1, то число однозначное, да строго соблюдается
0
1711 / 578 / 76
Регистрация: 10.04.2009
Сообщений: 9,316
18.10.2023, 20:30
Цитата Сообщение от Cookien Посмотреть сообщение
n значное число, т.е. если n = 1, то число однозначное
и как тогда быть, например билет имеет только цифру 1, тогда
Цитата Сообщение от Cookien Посмотреть сообщение
ищем билеты с одинаковой суммой цифр левой и правой части
КАКАЯ?
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
19.10.2023, 17:12
Цитата Сообщение от Arsegg Посмотреть сообщение
а есть на Литкоде такая задачка?
а это разве не классическая задача про счастливые билеты на ДП?
1
19.10.2023, 18:19

Не по теме:

eaa, она самая.

0
 Аватар для Aviz__
2739 / 2048 / 507
Регистрация: 17.02.2014
Сообщений: 9,467
20.10.2023, 15:06
Cookien,
Python
1
2
3
4
5
6
def is_lucky(ticket_nums):
    len_str = len(ticket_nums)
    if len_str == 2:
        return ticket_nums[0] == ticket_nums[1]
    half = len_str // 2
    return sum(map(int, ticket_nums[:half])) == sum(map(int, ticket_nums[half:]))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.10.2023, 15:06
Помогаю со студенческими работами здесь

Как оптимизировать программу?
Есть программа: #include &lt;iostream&gt; using namespace std; int main() { long int n, num, c = 0, i, j; int p = { 0...

Как оптимизировать программу
Мне не нравится с какой скорости у меня происходит обход стека при синтаксическом анализе текста - как можно определить что тормозит 1....

Как оптимизировать программу?
Написал программу, но по времени не проходит( Код: var a,b,c:int64; begin readln(a,b,c); a:=ceil((3*a+b-c)/3); if a&gt;0 then...

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

Как можно оптимизировать программу?
Создается трехмерный массив Имя папки-Список папок в ней-список файлов в папке В итоге жрется 500 МБ оперативной памяти, уменьшить...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru