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