Ниже даю подробное решение задачи и рабочие примеры кода. Цель — понять принцип решения и научиться реализовывать на практике. Так как не указан конкретный предмет и класс, подстрою объяснение под общую среднюю школу.
Задача (пояснение алгоритма)
- Вводим n и далее n натуральных чисел.
- Нужно найти максимальное число среди тех, что оканчиваются на цифру 3 (то есть x % 10 == 3).
- Если таких чисел нет, можно вывести соответствующее сообщение. В рамках задачи условие предполагает, что таких чисел хотя бы одно, но мы добавим безопасную обработку на случай отсутствия таковых.
Алгоритм
- Прочитать n.
- Прочитать далее n чисел.
- Инициализировать переменную max_end3 как пустую (или None).
- Для каждого числа x:
- если x % 10 == 3, обновлять max_end3: если max_end3 пустой или x > max_end3, присвоить max_end3 = x.
- Если max_end3 нашёлся, вывести его. Иначе вывести сообщение, что таких чисел нет.
Сложность: время O(n), память O(1).
Пример реализации на Python
import sys
def main():
data = sys.stdin.read().strip().split()
if not data:
return
it = iter(data)
try:
n = int(next(it))
except StopIteration:
return
max_end3 = None
count = 0
for _ in range(n):
try:
x = int(next(it))
except StopIteration:
break
if x % 10 == 3:
if max_end3 is None or x > max_end3:
max_end3 = x
count += 1
if max_end3 is None:
print("Нет чисел, оканчивающихся на 3")
else:
print(max_end3)
if __name__ == "__main__":
main()
Пример реализации на C++
#include <iostream>
#include <limits>
int main() {
using ll = long long;
int n;
if (!(std::cin >> n)) return 0;
ll best = std::numeric_limits<ll>::min();
bool found = false;
for (int i = 0; i < n; ++i) {
long long x;
if (!(std::cin >> x)) break;
if (x % 10 == 3) {
if (!found || x > best) {
best = x;
found = true;
}
}
}
if (found) {
std::cout << best << "\n";
} else {
std::cout << "Нет чисел, оканчивающихся на 3\n";
}
return 0;
}
Как проверить работу программы (руководство по тестам)
- Подготовьте ввод:
- Пример 1:
- Ввод:
5
12 23 33 7 43
- Ожидаемый вывод: 43
- Пример 2 (нет чисел на 3):
- Ввод:
4
11 25 7 89
- Ожидаемый вывод: Нет чисел, оканчивающихся на 3
- Как запустить (Python):
- Сохраните код в файл, например solution.py.
- В консоли выполните: python3 solution.py
- Введите сначала n, затем n чисел (через пробел или перевод строки).
- Как запустить (C++):
- Сохраните код в файл, например solution.cpp.
- Компиляция: g++ -std=c++17 solution.cpp -o solution
- Запуск: ./solution
- Примеры входных данных можно копировать целиком и вставлять в консоль.
Замечания по формату ввода
- Программа читает n и далее ровно n чисел. Если введено меньше чисел, она обработает доступные и завершится корректно. Если введено больше чисел, лишние игнорируются.
Если хотите, могу адаптировать решение под другой язык программирования (Java, JavaScript и т. д.) или увеличить объяснение теории до более подробного пошагового разборa. Также могу помочь с созданием скриншотов: опишите, какая IDE/редактор используется, и могу подсказать, как сделать нужные снимки экрана для проверки.