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

Задача не проходит по времени, слишком долго выполняется

31.05.2020, 15:57. Показов 2206. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие:
Серийные номера игр компании «1D Software» являются идущими подряд элементами числовой последовательности A. Десятичная запись i-го элемента этой последовательности строится конкатенацией всех целых положительных чисел, начиная с 1 (номер первого экземпляра игры) и заканчивая i. Например, A2=12, A11=1234567891011.

При этом, если серийный номер некоторого экземпляра игры делится на 2N, то владельцу этого экземпляра доступны дополнительные уровни.

Вам задано количество экземпляров M некоторой игры и число N. Вычислите, сколько экземпляров содержит дополнительные уровни.

Формат ввода
В единственной строке входа заданы два целых числа M и N (1 ≤ M ≤ 1018, 1 ≤ N ≤ 6).

Формат вывода
Выведите одно целое число — количество экземпляров игры, содержащих дополнительные уровни

Пример 1
Ввод
1 1
Вывод
0

Пример 2
Ввод
10 1
Вывод
5

Пример 3
Ввод
10 2
Вывод
2

Пример 4
Ввод
10 3
Вывод
1

Пример 5
Ввод
10 4
Вывод
1

Пример 6
Ввод
10 5
Вывод
1

Пример 7
Ввод
10 6
Вывод
1

Рабочий код, но превышающий лимит времени
Python
1
2
3
4
5
6
7
8
9
10
c = input().split()
a = int(c[0])
b = 2 ** int(c[1])
itog = 0
number = ''
for i in range(1, a + 1):
    number += str(i)
    if int(number) % b == 0:
        itog += 1
print(itog)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2020, 15:57
Ответы с готовыми решениями:

Слишком долго выполняется задача "ка-тая банка"
Привет. У Никиты есть n банок газировки, каждая из которых имеет свой объём. Известно, что полезнее всего пить газировку, начиная от...

Решето Эратосфена выполняется слишком долго
Следующий код... eratosPrimes :: Int -> eratosPrimes n = getEratosPrimes n where getEratosPrimes :: Int -> ...

Поиск простых чисел выполняется слишком долго
Добрый день, На Лурке в статье Python (http://lurkmore.to/Python) Приводится код скрипта - поиск простых чисел от 1 до 1 000 0000...

6
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
31.05.2020, 20:42
Цитата Сообщение от Armavia Посмотреть сообщение
но превышающий лимит времени
и с чем это может быть связано?

Добавлено через 1 минуту
Цитата Сообщение от Armavia Посмотреть сообщение
1018
1018 цифр так то не много.
0
0 / 0 / 0
Регистрация: 30.05.2020
Сообщений: 10
31.05.2020, 20:47  [ТС]
Опечатка, это 1018
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
31.05.2020, 20:51
а это много)) Что делать?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
01.06.2020, 03:27
Armavia, eaa, 1 ≤ N ≤ 6, т.е. надо уметь делать проверку на делимость 2, 4, 6, 8, 10, 12

Делимость на 2: Число делится на 2 тогда и только тогда, когда его последняя цифра делится на 2, то есть является чётной.
Делимость на 3: Число делится на 3, когда сумма его цифр делится на 3.
Делимость на 4: Число делится на 4, когда две последние цифры нули или составляют число, делящееся на 4.
Делимость на 6: Число делится на 6 тогда и только тогда, когда оно делится и на 2, и на 3 (то есть если оно четное и сумма его цифр делится на 3).
Делимость на 8: Число делится на 8, когда три последние цифры составляют число, делящееся на 8. Трёхзначное число делится на 8 тогда и только тогда, когда цифра в разряде единиц, сложенная с удвоенной цифрой в разряде десятков и учетверённой цифрой в разряде сотен, делится на 8.
Делимость на 10: Число делится на 10 тогда и только тогда, когда оно оканчивается на ноль.
Делимость на 12: 12 это 4*3, т.е. надо чтобы соблюдались признаки делимости на 4 и на 3.

Остаётся сложность с 1 ≤ M ≤ 10^18

И тут у меня открылись глаза. У нас есть некое число N и ряд чисел до M, нам надо сказать сколько из них делится на N.

Допустим N это 2, тогда каждое 2е число будет делиться на N, т.е. M/2 чисел мы получим в итоге.
Допустим N это 4, тогда каждое 4е число будет делиться на N, т.е. M/4 чисел мы получим в итоге.
Допустим N это 6, тогда каждое 6е число будет делиться на N, т.е. M/6 чисел мы получим в итоге.
...
В общем случае, получается что последовательность чисел до условно бесконечного M будет иметь M/N чисел делимых на N.

И тут я понял что нам то надо не просто делимость i-ого числа к 2n узнать, но числа которое будет склейкой всех чисел от 1 до i.

С делимостью на 2, 4, 8, 10 нам надо знать максимум 3 последних цифры чтобы сказать ответ формулой при росте i от 1000 (чтобы были эти 3 цифры).

Остаётся вопрос с делимостью на 6, 12 (так как нужна делимость на 3) и что делать для i до 1000.

Итоговое число будет склейкой от 1 до i, у нас получается последовательность 1, 12, 123, 1234, ...

И на этом моменте у меня огромное желание посмотреть как ведёт себя последовательность склеек до большого i (чтобы комп мог вычислить) по модулю 3. Есть ли там цикл и повторяется ли он всё время? Более того, туже операцию охота провести для делимости на 4 и 8, так можно решить проблему малых i одним махом.

Добавлено через 40 секунд
Цитата Сообщение от Armavia Посмотреть сообщение
Модераторы удаляют
Личка открыта

Добавлено через 5 минут
Цитата Сообщение от Armavia Посмотреть сообщение
2 ** int(c[1])
Делимость точно на 2N надо проверять или на 2^N?
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,360
Записей в блоге: 5
01.06.2020, 04:14
Ограничение времени 1 секунда
Ограничение памяти 256Mb

Серийные номера игр компании «1D Software» являются идущими подряд элементами числовой последовательности https://www.cyberforum.ru/cgi-bin/latex.cgi?A. Десятичная запись https://www.cyberforum.ru/cgi-bin/latex.cgi?i-го элемента этой последовательности строится конкатенацией всех целых положительных чисел, начиная с 1 (номер первого экземпляра игры) и заканчивая https://www.cyberforum.ru/cgi-bin/latex.cgi?i. Например, https://www.cyberforum.ru/cgi-bin/latex.cgi?A_2 = 12,https://www.cyberforum.ru/cgi-bin/latex.cgi? A_{11} = 1234567891011.

При этом, если серийный номер некоторого экземпляра игры делится на https://www.cyberforum.ru/cgi-bin/latex.cgi?2^N, то владельцу этого экземпляра доступны дополнительные уровни.

Вам задано количество экземпляров https://www.cyberforum.ru/cgi-bin/latex.cgi?M некоторой игры и число https://www.cyberforum.ru/cgi-bin/latex.cgi?N. Вычислите, сколько экземпляров содержит дополнительные уровни.

Формат ввода
В единственной строке входа заданы два целых числа https://www.cyberforum.ru/cgi-bin/latex.cgi?M и https://www.cyberforum.ru/cgi-bin/latex.cgi?N (1 ≤ M ≤ https://www.cyberforum.ru/cgi-bin/latex.cgi?10^{18}, 1 ≤ N ≤ 6).

Пример 1
Ввод Вывод
1 1
0
Пример 2
Ввод Вывод
10 1
5
Пример 3
Ввод Вывод
10 2
2
Пример 4
Ввод Вывод
10 3
1
Пример 5
Ввод Вывод
10 4
1
Пример 6
Ввод Вывод
10 5
1
Пример 7
Ввод Вывод
10 6
1

Добавлено через 10 минут
Делимость на 2^N, вроде как, надо в двоичной системе смотреть. Но число мы строим в 10-чной приклеивая новые цифры сзади и как подойти к изменениям 2-чной записи я, пока, ума не приложу.
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
01.06.2020, 04:47
outoftime, а мне это зачем? я знаю как решать эту задачу. Да и ТС разъяснять это нет смысла, судя по уроню.
вообще это какая то олимпиада как я понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2020, 04:47
Помогаю со студенческими работами здесь

Слишком долго выполняется запрос и возвращаются строки из БД
Здравствуйте. Я переделываю программу для знакомых. У них были исходники и они мне их дали для более быстрой разработки и оптимизации кода....

Сохранение страниц выполняется слишком долго, и текст обрезается
Здравствуйте! Помогите пожалуйста решить следующую проблему. Сайт на wp. Сервер apache 2.2 Проблема в том, что сохранение страниц...

Интегрирование заданной функции тремя способами - код выполняется слишком долго
Добрый вечер! Надо сделать лабораторную работу по численным методам. Результат верный, но программа выполняется оооочень долго. Цель работы...

Код очень долго выполняется, нужно сократить работу по времени
Анагра́мма (от греч. ανα- — «пере» и γράμμα — «буква») — литературный приём, состоящий в перестановке букв или звуков определённого слова...

Задача не проходит по времени
Доброго времени суток, есть вот такая задача: И мое решения: std::string toB(int n) { std::string ret = ""; while...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
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 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru