Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый Вчера, 17:27   #1
Vladix989
Новичок
Джуниор
 
Регистрация: 07.08.2025
Сообщений: 1
По умолчанию Нужна помощь с задачей

Здравствуйте. Есть такая задача(см. ниже), но я не могу понять её принцип и какой код должен быть. Помогите пожалуйста.

В системе, в которой происходит генерация логинов, в запросе можно указать префикс логина,
например, rucode24final- и два числа s и n (1 <= s <= 10^6, 1 <= n <= 500). Будут сгенерированы
логины с n подряд идущими номерами, начиная с s-го.
Система генерирует логины с заданным префиксом и всеми номерами из диапазона. Например,
если попросили сгенерировать логины с 8 по 10 (s = 8 и n = 3), будет выдано rucode24final-8,
rucode24final-9, rucode24final-10.
Уже на разобранном примере видно, что логины могут иметь различную длину, поэтому таб-
личка с ними выглядит неаккуратно. Для того, чтобы избежать такого, можно ¾добивать¿ пре-
фикс ведущими нулями, то есть для гернерации логинов с номерами с первого по десятый при-
дётся использовать два запроса: один с префиксом ¾rucode24final-0¿, s = 1 и n = 9, а второй с
префиксом "rucode24final-", s = 10 и n = 1. Тогда получится 10 логинов одинаковой длины с
rucode24final-01 по rucode24final-10 включительно.
Сколько запросов потребуется, чтобы сгенерировать n подряд идущих, начиная с единицы, ло-
гинов равной длины, следуя правилам, описанным выше? Напоминаем, что система не позволяет за
один запрос сгенерировать более 500 логинов.

Формат входных данных
Первая строка входных данных содержит одно целое число n - количество логинов, которые
должны быть сгенерированы (1 <= n <= 20 000).

Формат выходных данных
Выведите одно целое число - количество запросов на генерацию пароля.
Изображения
Тип файла: jpg примеры.JPG (15.4 Кб, 0 просмотров)
Vladix989 вне форума Ответить с цитированием
Старый Вчера, 19:50   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,900
По умолчанию

Цитата:
Сообщение от Vladix989 Посмотреть сообщение
Помогите пожалуйста.
Могу помочь переносом темы во Фриланс. Устроит?
Arigato вне форума Ответить с цитированием
Старый Вчера, 20:11   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,432
По умолчанию

А что именно не понятно, что не получается? Упростим задачу: дано число - количество логинов для генерации, ответ - сколько запросов нужно для их генерации (с учетом того, что за один запрос генерируется только 500 паролей). Тогда просто делим нацело n на 500 (а если остаток от деления не равен нулю, то нужен еще один запрос):
Код:
n = int(input())
print((n + 499) // 500)
Но в таком виде логины получатся от 1 до n, т.е. разной длины. Если решать "в лоб", то можно было бы считать сколько логинов каждой длины нужно сгенерировать, а затем считать сколько запросов нужно для каждой длины:
Код:
n = int(input())
d = {}
for i in range(1, n + 1):
    k = len(str(i))
    if k in d:
        d[k] += 1
    else:
        d[k] = 1
k = 0
for i in d.values():
    k += (i + 499) // 500
print(k)
Или можно упростить, если понять, что нужен 1 запрос для девяти однозначных паролей, 1 запрос для 90 двухзначных паролей, 2 запроса (по 500 и 400) для 900 трехзначных паролей, а более длинные пароли уже "раскладываются" ровно по 500.
Код:
n = int(input())
k = 0
if n > 9:
    k += 1
    n -= 9
if n > 90:
    k += 1
    n -= 90
if n > 900:
    k += 2
    n -= 900
k += (n + 499) // 500
print(k)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с задачей IMarkTop Паскаль, Turbo Pascal, PascalABC.NET 1 18.02.2023 00:09
Нужна помощь с задачей! alnik Паскаль, Turbo Pascal, PascalABC.NET 1 13.01.2018 16:34
нужна помощь с задачей Nakaa Помощь студентам 4 30.10.2017 03:44
Нужна помощь с задачей на С++ jinos Помощь студентам 3 25.09.2017 08:41
НУжна помощь с задачей. ДЕлфи stasig Помощь студентам 0 03.05.2009 16:35