Подсчитайте числа, не содержащие 3
Опубликовано: 21 Января, 2022
Для числа n напишите функцию, которая возвращает количество чисел от 1 до n, не содержащих цифры 3 в их десятичном представлении.
Примеры:
Ввод: n = 10 Выход: 9 Исходные данные: n = 45 Выход: 31 // Числа 3, 13, 23, 30, 31, 32, 33, 34, // 35, 36, 37, 38, 39, 43 содержат цифру 3. Ввод: n = 578. Выход: 385
Мы настоятельно рекомендуем вам щелкнуть здесь и попрактиковаться, прежде чем переходить к решению.
Решение:
Мы можем решить это рекурсивно. Пусть count (n) будет функцией, которая считает такие числа.
'msd' -> самая значимая цифра в n 'd' -> количество цифр в n. count (n) = n, если n <3 count (n) = n - 1, если 3 <= n 10 и msd не равно 3 count (n) = count (msd * (10 ^ (d-1)) - 1) если n> 10 и msd равно 3
Разберемся с решением с n = 578. count (578) = 4 * count (99) + 4 + count (78) Средний член 4 добавлен, чтобы включить числа 100, 200, 400 и 500. В качестве другого примера возьмем n = 35. count (35) = count (3 * 10-1) = count (29)
Выход:
385
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше
Вниманию читателя! Не прекращайте учиться сейчас. Получите все важные математические концепции для соревновательного программирования с курсом Essential Maths for CP по доступной для студентов цене. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .