В этой статье мы подробно разберём задачу, в которой нужно определить, нравится ли Соне заданное трёхзначное число․ Ключевой момент – проверка средней цифры относительно первой и третьей․
Постановка задачи
Соне нравятся трёхзначные числа, у которых средняя цифра больше или равна цифре слева и больше или равна цифре справа․ Дано трёхзначное число n․ Нужно вывести:
- «ДА» – если число нравится Соне;
- «НЕТ» – если число не нравится․
Формат входных и выходных данных
Вход
Одно целое трёхзначное число n (100 ≤ n ≤ 999)․
Выход
Одна строка: «ДА» или «НЕТ»․
Пример
Input: 321 Output: ДА
Пояснение: число 321 имеет цифры 3 (левый), 2 (средний), 1 (правый)․ Средняя цифра 2 ≤ 3 и 2 ≥ 1, но условие «меньше либо равно» не соответствует, поэтому ответ «НЕТ»․ (В приведённом примере условие было «меньше либо равно», но в реальной задаче – «больше либо равно»)․ Ниже приведены корректные примеры․
Input: 123 Output: ДА
Здесь 2 ≥ 1 и 2 ≥ 3 → условие выполнено․
Алгоритм решения
- Считать число
n․ - Получить его цифры:
a = n / 100– первая (слева)․b = (n / 10) % 10– средняя․c = n % 10– последняя (справа)․
- Проверить условие:
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 "НЕТ")
Удачной реализации и хороших результатов на ЕГЭ/ОГЭ!