Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3600787
А
Аноним
15 апреля 2026 10:02 · публичный вопрос
А
Аноним

На языке программирования Python написана программа, которая должна находить количество цифр, равных 3, и количество цифр, отличных от 3, в числе, введённом пользователем.

Ответ нейросети
15 апреля 2026 10:02

Ниже будет подробное решение на Python с пояснениями. Задача: подсчитать количество цифр, равных 3, и количество цифр, отличных от 3, в числе, введённом пользователем.

Ключевые моменты:

  • Игнорируем знак числа (если вводится отрицательное, считаем цифры после знака).
  • Подсчитываем только цифры; если ввод может содержать пробелы или знаки, они не учитываются.
  • Можно решить двумя способами: по строке (побитовый разбор символов) или по арифметике (разбор цифр через деление на 10).
  1. Способ 1: разбор по строке Пошагово:
  • Считать ввод как строку и убрать ведущие/завершающие пробелы.
  • Пропускать символы знака +/−.
  • Для каждой цифры увеличить счёт цифр равных 3 или счёт цифр не равных 3.

Пример кода:

  • Пояснение: мы считаем каждую цифру отдельно, поэтому, например, для числа -33003 получится c3 = 2, cNot3 = 3.

Код: s = input("Введите число: ").strip() count3 = 0 countNot3 = 0

for ch in s: if ch in '+-': continue if ch.isdigit(): if ch == '3': count3 += 1 else: countNot3 += 1

print("Цифр 3:", count3) print("Цифр, отличных от 3:", countNot3)

Пояснения к коду:

  • ch.isdigit() гарантирует, что мы считаем только цифры.
  • Знак игнорируется, чтобы не мешать подсчёту цифр.
  • Ввод может быть любым числом, например 0, 303, -123, 0033 (если встречаются ведущие нули, они будут считаны как цифры).
  1. Способ 2: разбор числа арифметически (через деление на 10) Пошагово:
  • Преобразовать ввод к целому числу и взять модуль, чтобы работать с абсолютным значением.
  • Специально обработать случай, когда число равно 0 (одна цифра 0, которая не равна 3).
  • Выполнять цикл: пока число > 0, взять последнюю цифру d = n % 10; если d == 3 — увеличить count3, иначе увеличить countNot3; затем уйти к следующей цифре: n //= 10.

Код: try: n = int(input("Введите число: ").strip()) except ValueError: print("Некорректный ввод") raise SystemExit(1)

n = abs(n) count3 = 0 countNot3 = 0

if n == 0: # число 0 имеет одну цифру, которая не равна 3 countNot3 = 1 else: while n > 0: d = n % 10 if d == 3: count3 += 1 else: countNot3 += 1 n //= 10

print("Цифр 3:", count3) print("Цифр, отличных от 3:", countNot3)

Пояснения к коду:

  • abs(n) безопасно удаляет знак, чтобы считать цифры.
  • Для числа 0 цикл не выполняется, поэтому отдельно обрабатываем этот случай.
  • Время выполнения пропорционально количеству цифр в числе, память константна.

Сравнение вариантов:

  • Способ 1 проще читать и писать, работает прямо с введённой строкой, не требует конвертации в число. Но если в строке встречаются посторонние символы, они игнорируются.
  • Способ 2 может быть чуть быстрее и точно учитывает фактические цифры числа, но требует обработки ввода как целого числа и не сохраняет ведущие нули (ведущие нули в числовом вводе обычно не сохраняются).

Пример теста: Ввод: 303030

  • Способ 1: Цифр 3: 3; Цифр, отличных от 3: 3
  • Способ 2: Цифр 3: 3; Цифр, отличных от 3: 3

Сложность:

  • Оба подхода имеют временную сложность O(k), где k — количество цифр числа.
  • Пространственная сложность O(1) в обоих случаях (за исключением количества памяти, используемой для самого ввода).

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