Задача Соны о трёхзначном числе

Узнайте, нравится ли Соне заданное трёхзначное число, проверив среднюю цифру

В этой статье мы подробно разберём задачу, в которой нужно определить, нравится ли Соне заданное трёхзначное число․ Ключевой момент – проверка средней цифры относительно первой и третьей․

Постановка задачи

Соне нравятся трёхзначные числа, у которых средняя цифра больше или равна цифре слева и больше или равна цифре справа․ Дано трёхзначное число n․ Нужно вывести:

  • «ДА» – если число нравится Соне;
  • «НЕТ» – если число не нравится․

Формат входных и выходных данных

Вход

Одно целое трёхзначное число n (100 ≤ n ≤ 999)․

Выход

Одна строка: «ДА» или «НЕТ»․

Пример

Input:
321
Output:
ДА

Пояснение: число 321 имеет цифры 3 (левый), 2 (средний), 1 (правый)․ Средняя цифра 2 ≤ 3 и 2 ≥ 1, но условие «меньше либо равно» не соответствует, поэтому ответ «НЕТ»․ (В приведённом примере условие было «меньше либо равно», но в реальной задаче – «больше либо равно»)․ Ниже приведены корректные примеры․

Input:

123
Output:
ДА

Здесь 2 ≥ 1 и 2 ≥ 3 → условие выполнено․

Алгоритм решения

  1. Считать число n․
  2. Получить его цифры:
    • a = n / 100 – первая (слева)․
    • b = (n / 10) % 10 – средняя․
    • c = n % 10 – последняя (справа)․
  3. Проверить условие: b >= a && b >= c․
    • Если истина – вывести «ДА»․
    • Иначе – вывести «НЕТ»․

Корректность алгоритма

Алгоритм последовательно извлекает каждую цифру числа и сравнивает среднюю цифру с двумя крайними․ Поскольку все три цифры рассматриваются независимо, условие ровно соответствует описанному требованию․ Поэтому вывод «ДА» производится только тогда, когда число удовлетворяет условию, иначе «НЕТ»․

Сложность

Память: O(1) – фиксированное число переменных․

Реализации на разных языках

Python 3

n = int(input)

a = n // 100 # первая цифра
b = (n // 10) % 10 # средняя
c = n % 10 # последняя

print("ДА" if b >= a and b >= c else "НЕТ")

C++ (стандартный)

#include <iostream>
using namespace std;

int main {
 int n;
 if (!(cin >> n)) return 0;
 int a = n / 100;
 int b = (n / 10) % 10;
 int c = n % 10;
 cout << ((b >= a && b >= c) ? "ДА" : "НЕТ");
 return 0;
}

Java

import java․util․*;

public class Main {
 public static void main(String[] args) {
 Scanner sc = new Scanner(System․in);
 int n = sc․nextInt;

 int a = n / 100;
 int b = (n / 10) % 10;
 int c = n % 10;

 System․out․println((b >= a && b >= c) ? "ДА" : "НЕТ");
 }}

Тесты

Часто задаваемые вопросы

Что если число содержит нули?

Нули рассматриваются как обычные цифры․ Условие проверяется одинаково․ Например, 104 → 0 < 1 и 0 < 4, ответ «НЕТ»․

Можем ли мы использовать отрицательные числа?

В условии сказано, что число трёхзначное, значит 100 ≤ n ≤ 999․ Отрицательных входных данных не рассматриваем․

Как получить цифры без деления?

Можно преобразовать число в строку и посчитать символы, но это менее эффективно․ Деление и остаток – стандартный способ․

Проверка средней цифры относительно крайних – простое арифметическое сравнение․ Алгоритм имеет константную сложность и легко реализуется на любом языке․ Ниже приведена готовая реализация на Python, которую можно использовать в онлайн‑тестах․

n = int(input)
a, b, c = n // 100, (n // 10) % 10, n % 10
print("ДА" if b >= a and b >= c else "НЕТ")

Удачной реализации и хороших результатов на ЕГЭ/ОГЭ!