Напишите программу которая получает на вход полное название файла и проверяет его по этим правилам

Обновлено: 03.07.2024


Здравствуйте! Будем тренироваться решать 22 задание из ЕГЭ по информатике 2021.

Двадцать второе задание требует от учащегося разбираться в программном коде. Код будет как всегда дан на 4 или 5 языках программирования.

Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: L и M. Укажите наименьшее из таких чисел x, при вводе которых алгоритм печатает сначала 8, а потом 13.

Все задачи будем разбирать на языке паскаль.


ЕГЭ по информатике 2021 - задание 22 (Разбор программы)

Попробуем понять основную идею данной программы 22 задания из ЕГЭ по информатике 2021.

В начале ввели с клавиатуры какое-то число и положили его в переменную x.

Затем начинается ЦИКЛ while. Пока x > 0, будет выполняться тело ЦИКЛА.

Внутри ЦИКЛА к переменной M прибавляется с каждой итерацией ЦИКЛА последняя цифра введённого числа x.

Конструкция x mod 10 обозначает последнюю цифру.

x := 17 ;
y := 17 mod 10 ;

В переменной y будет значение 7! Если 17 : 10 = 1 (ост. 7)


mod - это остаток от деления.

Далее идёт условие. Если последняя цифра x больше, чем предыдущее значение переменной L, то эта цифра становится новым значением переменной L.

Следующая и последняя команда внутри тела ЦИКЛА: x := x div 10, просто отбрасывает последнюю цифру числа x.

Конструкция x div 10 удаляет последнюю цифру.

x := 17 ;
y := 17 div 10 ;

В переменной y будет значение 1! Если 17 : 10 = 1,7 - но дробную часть отбрасываем!


div - это целочисленное деление.

Подобные конструкции часто встречается в 22 задании ЕГЭ по информатике 2021.

Таким образом, мы берём последнюю цифру, прибавляем её к переменной M, а затем отбрасываем её. И так будет происходить, пока x > 0 (пока у числа будут цифры).

Ещё в переменной L окажется самая большая цифра числа x!!

По условии задачи L = 8, а M = 13. Т.е. самая большая цифра числа x должна быть 8, а сумма всех цифр числа x должна быть 13.

Наименьшее число x получается 58.

Рассмотрим следующую важную задачу из ЕГЭ информатике.


Задача (связь с системами счисления)

Ниже на четырёх языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа: a и b. Укажите наименьшее из таких чисел x, при вводе которого алгоритм печатает сначала 3, а потом 2

В этой задаче внутри ЦИКЛа while к переменной a прибавляется 1 с каждой итерацией.

Так же есть условие, благодаря которому, в переменной b будет наибольший остаток от деления числа x на 8. Причём с каждой итерацией число x уменьшается целочислено в 8 раз! (ведь следующая команда идёт x:=x div 8).

Разгадка: Помните, как мы переводим в восьмеричную систему из десятичной системы ? Мы делим на 8 и собираем остатки! Здесь та же самая картина! Получается, что в выражении x mod 8 будут поочерди находится все цифры числа x в восьмеричной системе! А в переменной b окажется самая большая цифра числа x в восьмеричной системе.

Значит, мы должны составить переменную x сначала в восьмеричной системе, где самая большая цифра будет 2, а количество цифр будет 3 (переменная a).

Такое число будет x = 1028.

Переводим это число в нашу десятичную систему и запишем ответ. 1028 -> 6610.

Закрепим результаты по изучению 22 задания из ЕГЭ по информатике 2021

Ниже на пяти языках записан алгоритм. Получив на вход число x, этот алгоритм печатает два числа a и b. Укажите наибольшее из таких чисел x, при вводе которого алгоритм печатает сначала 2, а потом 5.

Эта задача похоже на предыдущую! Но теперь у нас выражение x mod 100 будет получать цифры 100-ричной системы числа x с каждой новой итерацией!

В переменной же b будет произведение всех цифр числа x в 100-ричной системе после окончания ЦИКЛА.

По условию задачи произведение цифр числа x в 100-ричной системе равно 5, а количество цифр равно 2 (за это отвечает переменная a). Нужно указать наибольшее число x! Нам подходит число 51100.

Переведём число 51100 в десятичную систему.


1 * 100 0 + 5 * 100 1 = 501

Ответ будет 501.

Задачи 22 задания из реального ЕГЭ по информатике.

Ниже приведён алгоритм. Укажите наибольшее число x, при вводе которого алгоритм напечатает сначала 3, потом - 7.

Выражение x mod 2 может давать только два значения: либо 0, либо 1.

Следовательно, если остаток от деления x на 2 больше чем ноль, значит, в x mod 2 единица. Значит, в L подсчитывается количество единиц.

Переменная M подсчитывает количество всего итераций.

Если провести аналогию, что у нас есть число x в двоичной системе, то переменная L покажет, сколько в нём единиц, а переменная M - сколько всего разрядов в этом двоичном числе.

Нам нужно указать наибольшее x, где L = 3, а M = 7.

Получается, что такое число x будет 11100002. Если его перевести в десятичную систему, то получится 112!


Задача (ЕГЭ по информатике, 2020, Москва)

Ниже приведён алгоритм. Укажите наибольшее число x, при вводе которого алгоритм напечатает сначала 3, потом 6.

Структура программы похожа на те, которые мы уже рассматривали!

Связка выражений x mod 8 и x div 8 подсказывает нам, что мы сначала должны подобрать x в восьмеричной системе!

В переменной L после выполнения всего ЦИКЛа будет произведение цифр числа x записанное в восьмеричной системе, но не всех, а только тех, которые равны 2, 4 или 6. Ведь команда L := L * (x mod 8); выполняется, если x нацело делится на 2!

Если x нацело делится на 2 (остаток от деления на 2 равен нулю), то остатки от деления на 8 могут быть:


10 : 8 = 1 (ост. 2)
12 : 8 = 1 (ост. 4)
14 : 8 = 1 (ост. 6)
16 : 8 = 2 (ост. 0)

Дальше остатки будут повторяться!

Ноль не может быть в нашем числе x записанное в восьмеричной системе, потому что, тогда бы, произведение цифр сразу стало бы равно нулю, а у нас переменная L = 6.

Переменная M характеризует количество цифр всего в числе x записанное в восьмеричной системе.

Итак, длина числа в восьмеричной системе должна равняться 3, а произведение цифр, которые могут быть равны 2, 4, 6 равно 6.

Если цифры не равны 2, 4, или 6, то они не участвуют в произведении и в формировании переменной L.

Нужно указать наибольшее число. В начале была L = 1. Получается, что в числе x8 только одна цифра 6 (1 * 6 = 6). Больше никак не получить произведение цифр равное 6, причём, чтобы множители можно было выбирать из цифр 2, 4, 6.

Таким образом, x8 = 7768. Это число трёхзначное, первые две цифры берём по максимуму, и так же должна обязательна быть цифра 6.

Переведём это число в десятичную систему. 7768 -> 51010.

Читайте также: