Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3547153
А
Аноним
18 января 2026 16:09 · публичный вопрос
А
Аноним

Дано натуральное число и (n> 99). Определить его третью (с начала) цифру. Задачу решить двумя способами: а) с использованием двух операторов цикла; б) с использованием одного…

Запрос пользователя

Дано натуральное число и (n> 99). Определить его третью (с начала) цифру. Задачу решить двумя способами: а) с использованием двух операторов цикла; б) с использованием одного оператора цикла. Решить информатика

Ответ нейросети
18 января 2026 16:09

Задача: дано натуральное число n > 99. Определить его третью цифру слева (с начала числа). Решить двумя способами: а) с использованием двух операторов цикла; б) с использованием одного оператора цикла. Примеры: для 12345 третья цифра слева — 3.

Общая идея: третья цифра слева равна последней цифре трёхзначной части числа, полученной, если отбрасывать справа лишние цифры. Это можно сделать двумя циклами или одним циклoм.

Способ а) с использованием двух операторов цикла Шаги:

  1. Посчитать количество цифр в числе (для целей примера, хотя в этом решении он не нужен напрямую).
  2. Отбрасывать справа цифры, пока число не станет трёхзначным (то есть пока n >= 1000, делим на 10).
  3. Третья цифра слева — это последняя цифра оставшегося числа: результат = 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; }

Способ б) с использованием одного оператора цикла Шаги:

  1. Отбрасывать справа цифры, пока число не станет трёхзначным (n >= 1000).
  2. Третью цифру слева можно взять как последнюю цифру полученного числа: результат = 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++) с тестами.