Олимпиада по информатике 2025-2026 муниципальный этап Магическая семёрка

Олимпиада по информатике 2025-2026 муниципальный этап Магическая семёрка

Скачать

Идея:
Пусть f(x) — количество «магических» чисел ≤ x.
Число магическое, если:

  • делится на 7

  • или оканчивается цифрой 7

Посчитаем f(x) по включению–исключению:

  • cnt_div7 = x // 7 — делятся на 7

  • cnt_end7 — числа, оканчивающиеся на 7: 7, 17, 27, …
    если x >= 7, то cnt_end7 = (x - 7) // 10 + 1, иначе 0

  • cnt_both — и делятся на 7, и оканчиваются на 7: 7, 77, 147, 217, …
    это числа вида 7 + 70*k, значит, если x >= 7, то
    cnt_both = (x - 7) // 70 + 1, иначе 0

Тогда:

Дальше бинарным поиском найдём минимальное x, для которого f(x) >= k.