Дано натуральное число и (n> 99). Определить его третью (с начала) цифру. Задачу решить двумя способами: а) с использованием двух операторов цикла; б) с использованием одного оператора цикла. Решить информатика
Ответ нейросети
18 января 2026 16:09
Задача: дано натуральное число n > 99. Определить его третью цифру слева (с начала числа). Решить двумя способами: а) с использованием двух операторов цикла; б) с использованием одного оператора цикла. Примеры: для 12345 третья цифра слева — 3.
Общая идея: третья цифра слева равна последней цифре трёхзначной части числа, полученной, если отбрасывать справа лишние цифры. Это можно сделать двумя циклами или одним циклoм.
Способ а) с использованием двух операторов цикла Шаги:
- Посчитать количество цифр в числе (для целей примера, хотя в этом решении он не нужен напрямую).
- Отбрасывать справа цифры, пока число не станет трёхзначным (то есть пока n >= 1000, делим на 10).
- Третья цифра слева — это последняя цифра оставшегося числа: результат = n % 10.
Псевдокод/пояснение:
- tmp = n
- while tmp > 0: увеличить количество цифр; tmp //= 10
- while n >= 1000: n //= 10
- ответ = n % 10
Пример реализации на Python: def third_digit_left_two_loops(n: int) -> int: # Шаг 1: посчитать digits (для соответствия требованию двух циклов) tmp = n digits = 0 while tmp > 0: digits += 1 tmp //= 10
# Шаг 2: отбросить справа до трёх цифр
while n >= 1000:
n //= 10
# Шаг 3: третья цифра слева — последняя цифра получившегося числа
return n % 10
Пример реализации на C++: int thirdDigitLeftTwoLoops(long long n) { long long tmp = n; int digits = 0; while (tmp > 0) { digits++; tmp /= 10; } while (n >= 1000) { n /= 10; } return n % 10; }
Способ б) с использованием одного оператора цикла Шаги:
- Отбрасывать справа цифры, пока число не станет трёхзначным (n >= 1000).
- Третью цифру слева можно взять как последнюю цифру полученного числа: результат = n % 10.
Пример реализации на Python: def third_digit_left_one_loop(n: int) -> int: while n >= 1000: n //= 10 return n % 10
Пример реализации на C++: int thirdDigitLeftOneLoop(long long n) { while (n >= 1000) { n /= 10; } return n % 10; }
Пояснение по примерам:
- n = 12345: Способ а: tmp подсчитывает 5 цифр; затем n становится 123; ответ = 3. Способ б: цикл преобразует 12345 → 123 → результат 3.
- n = 1000: Способ а: после отброса справа до трех цифр получаем 1; ответ 1 % 10 = 0. Способ б: 1000 → 100; ответ 0.
- n = 987: Способ а: 987 уже трехзначное, ответ 987 % 10 = 7. Способ б: так же, ответ 7.
Сложность:
- Оба способа работают за O(log10 n) итераций (по количеству цифр). Приведённые реализации используют константное количество операций внутри цикла.
Если нужно, могу привести пример полного ввода-вывода под конкретный язык (Python или C++) с тестами.
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



