Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3535112
А
Аноним
13 декабря 2025 18:01 · публичный вопрос
А
Аноним

Напишите программу, которая получает с клавиатуры натуральное число и опре-деляет, сколько раз в его десятичной записи встречается цифра 1. Пример: Введите число? 311 Единиц: 2

Ответ нейросети
13 декабря 2025 18:01

Задача: определить, сколько раз в десятичной записи натурального числа встречается цифра 1.

План решения (пошаговый):

  • Способ 1 (самый простой для школьника): работать со строковым представлением числа. Преобразовать ввод в строку и посчитать количество символов '1'.
  • Способ 2 (арифметический): последовательно разбирать цифры числа через деление на 10 и счёт тех, которые равны единице.
  • Пример: для числа 311 — две единицы.

Python-реализация (через строку, простой и понятный способ)

  • код: def count_ones_str(n_str): return sum(1 for ch in n_str if ch == '1')

s = input("Введите число? ").strip() print("Единиц:", count_ones_str(s))

Как это работает:

  • вводим число как строку, например "311".
  • считаем, сколько символов равны '1' в этой строке.
  • выводим результат. В примере 311 → 2.

Альтернативный вариант на Python (арифметический подход)

  • код: def count_ones_num(n): cnt = 0 while n > 0: if n % 10 == 1: cnt += 1 n //= 10 return cnt

s = input("Введите число? ").strip() n = int(s) print("Единиц:", count_ones_num(n))

Как это работает:

  • берём число и по шагам отделяем последнюю цифру (n % 10).
  • если она равна 1, увеличиваем счётчик.
  • удаляем последнюю цифру (n //= 10) и повторяем, пока не останется цифр.
  • пример: 311 → 2.

Дополнительно: варианты на других языках (для справки)

  • C++ (через строку):

#include #include using namespace std;

int main() { string s; cout << "Введите число? "; if (!(cin >> s)) return 0; int cnt = 0; for (char c : s) if (c == '1') ++cnt; cout << "Единиц: " << cnt << endl; return 0; }

  • C++ (арифметический подход):

#include using namespace std;

int main() { long long n; cout << "Введите число? "; if (!(cin >> n)) return 0; int cnt = 0; while (n > 0) { if (n % 10 == 1) ++cnt; n /= 10; } cout << "Единиц: " << cnt << endl; return 0; }

Пример теста: Ввод: 311 Вывод (оба подхода): Единиц: 2

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