Блог репетитора по информатике
Есть ли возможность решить 25 задание в LibreOffice
Понятно, что решать 25 задание ЕГЭ по информатике лучше решать, написав программу. Но для некоторых ребят решение в табличном редакторе - спасительное решение.
Сразу нужно оговориться, что LibreOffice работает медленно при обработке больших массивов данных.
25 задание предполагает перебор большого количества чисел, а количество строк на листе 1_048_576. Поэтому создавать набор чисел в лоб нельзя, нужно правильно задавать начальное и конечное значение.
Разберем решение задачи на маску с сайта kompegee № 3585
Назовём максой числа последовательность цифр, в которой также могут встречаться следующие символы:- символ "?" означает ровно одну произвольную цифру.- символ "*" означает любую последовательность цифр произвольной длины. Кроме того, "*" может задавать и пустую последовательность.Например, маске 123*4?5 соответствуют числа 123405 и 12300405.Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 1234?57?8, делящиеся на число 17 без остатка.В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце - соответствующие им результаты деления этих чисел на 17.
Этап 1. Формирование последовательности чисел
Сначала определяем с какого числа нужно начать последовательность. Это число должно быть как можно ближе к числу, подходящему к маске с минимальным значением.
Маска | 1234?57?8 |
Знак "?" заменяет ровно одну цифру 0..9 |
Минимальное значение | 123405708 | Знак "?" заменяем на 0 |
Максимальное значение | 123495798 | Знак "?" заменяем на 9 |
Опредеяем первое число, которое делится на 17. Оно должно быть как можно ближе к минимальному значению.
Стартовое значение:
123405708/17= | 7 259 159, 29 |
Округляем до большего | 7 259 160 |
7 259 160*17 = | 123 405 720 |
Заполняем столбец А последовательностью чисел от стартового до максимального с шагом 17, тем самым получим числа, кратные 17.
- Вписываем полученное значение 123405720 в ячеку А1.
- Выделяем весь столбец А, кликнув по заголовку столбца.
- Не снимая выделения, переходим в меню "Лист" - "Заполнить" - "Заполнить ряды".
- Стартовое значение уже опеределено. Заполняем поле "Кон. значение"=123495798
- Приращение = 17
- Нажимаем "ОК"
Должен сформироваться столбец чисел.
![]() |
![]() |
![]() |
![]() |
Этап 2. Фильтрация данных
Для включения фильтра необходимо создать заголовок. Для этого вставляем новую строку перед первым числом и озаглавливаем.
Выделив ячейку заголовка включаем фильтр
![]() |
![]() |
Для фильтрации чисел по маске в LibreOffice нужноо использовать регулярные выражения:
Знак | Значение | Пример |
* | 0 или больше повторений символов регулярного выражения | 12(\d)*5 Возможные результаты: 125, 1265, 12005 |
+ | 1 или больше повторений символов регулярного выражения |
12(\d)+5 Возможные результаты: |
? | 0 или 1 повторений символов регулярного выражения |
12(\d)?5 Возможные результаты: |
\d | любая цифра | |
[...] | один из перечисленных символов |
12([36])+5 Возможные результаты: |
{n} | точное количество повторений символов регулярного выражения |
12([36]){2}5 Возможные результаты: |
Составим регулярное выражение:
Маска в задаче | 1234?57?8 |
Регулярное выражение для фильтра | 1234(\d){1}57(\d){1}8 |
Теперь можно установить условие фильтрации чисел. Для этого заходим в меню настройки фильтров, нажам на "педальку" в ячейке заголовка столбца. В открывшемся меню выбираем пункт "Фильтр по условию" - "Стандартный фильтр".
В открвшемся окне обязательно раскрываем дополнительное поле "Параметры", где ставим галочку "Регулярные выражения". А в поле "Условия фильтра" указываем имя столбца, операцию "=", а в поле "Значение" вбиваем регулярное выражение, которое составили ранее. Нажимаем "ОК". Если всё сделано правильно, то числа должны отфильтроваться.
В итоге для этой задачи получаем 6 чисел
Этап 3. Вычисление результата
По условию задачи нужно для полученных значений вычислить частное от деления на 17. Для этого в столбце В пишем формулу и протягиваем для полученных значений в столбце А:
=ЧАСТНОЕ(A6; 17)
![]() |
![]() |
Ответ получен.
Какой вывод можно сделать?
- Решить задачу в Libre возможно, но табличный редактор может подтормаживать
- При большом диапазоне значений может не хватить строк. Нужно правильно подбирать стартовое значение для оптимального заполнения строк.
- Нужно хорошо ориентироваться в регулярных выражениях. А также регулярные выражения могут пригодиться для решения 10 и 24 задания ЕГЭ