Задача: определить, сколько раз в десятичной записи натурального числа встречается цифра 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
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
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
Если хочешь, могу адаптировать решение под конкретный язык программирования или школьный уровень.