Блог репетитора по информатике

Есть ли возможность решить 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.

  1. Вписываем полученное значение 123405720 в ячеку А1. 
  2. Выделяем весь столбец А, кликнув по заголовку столбца.
  3. Не снимая выделения, переходим в меню "Лист" - "Заполнить" - "Заполнить ряды".
  4. Стартовое значение уже опеределено. Заполняем поле "Кон. значение"=123495798
  5. Приращение = 17
  6. Нажимаем "ОК"

Должен сформироваться столбец чисел. 



Этап 2. Фильтрация данных

Для включения фильтра необходимо создать заголовок. Для этого вставляем новую строку перед первым числом и озаглавливаем.

Выделив ячейку заголовка включаем фильтр

Для фильтрации чисел по маске в LibreOffice нужноо использовать регулярные выражения:

Знак Значение Пример
* 0 или больше повторений символов регулярного выражения 12(\d)*5
Возможные результаты:
125, 1265, 12005
+ 1 или больше повторений символов регулярного выражения

12(\d)+5

Возможные результаты:
1215, 12995, 128745

? 0 или 1 повторений символов регулярного выражения

12(\d)?5

Возможные результаты:
125, 1235, 1295...

\d любая цифра  
[...] один из перечисленных символов

12([36])+5

Возможные результаты:
1235, 12335, 1265, 123365...

{n} точное количество повторений символов регулярного выражения

12([36]){2}5

Возможные результаты:
12335, 12665, 12635, 12365

Составим регулярное выражение:

Маска в задаче 1234?57?8
Регулярное выражение для фильтра 1234(\d){1}57(\d){1}8

 

Теперь можно установить условие фильтрации чисел. Для этого заходим в меню настройки фильтров, нажам на "педальку" в ячейке заголовка столбца.  В открывшемся меню выбираем пункт "Фильтр по условию" - "Стандартный фильтр".

В открвшемся окне обязательно раскрываем дополнительное поле "Параметры", где ставим галочку "Регулярные выражения". А в поле "Условия фильтра" указываем имя столбца, операцию "=", а в поле "Значение" вбиваем регулярное выражение, которое составили ранее. Нажимаем "ОК". Если всё сделано правильно, то числа должны отфильтроваться.

В итоге для этой задачи получаем 6 чисел

Этап 3. Вычисление результата

По условию задачи нужно для полученных значений вычислить частное от деления на 17. Для этого в столбце В пишем формулу и протягиваем для полученных значений в столбце А: 

=ЧАСТНОЕ(A6; 17)

Ответ получен.

Какой вывод можно сделать?

  1. Решить задачу в Libre возможно, но табличный редактор может подтормаживать
  2. При большом диапазоне значений может не хватить строк. Нужно правильно подбирать стартовое значение для оптимального заполнения строк.
  3. Нужно хорошо ориентироваться в регулярных выражениях. А также регулярные выражения могут пригодиться для решения 10 и 24 задания ЕГЭ