ЕГЭ. Информатика. Задание 26.

Коротко об исходных данных. Все просто:

  • известен объём диска (первое число);
  • известно количество пользователей, что хотят сохранить свои данные на диск (второе число).

Числовые данные нам представляются текстовым файлом. Их нужно перенести в документ Excel. Для этого открываем текстовый файл. Во вкладке “Правка” нажимаем команду “Выделить все” – все данные окрашиваются в синий цвет. Далее вновь заходим во вкладку “Правку”, но выбираем команду ” Копировать”. Переходим в документ Excel и в верхней левой ячейке вставляем скопированные данные (можно нажать на правую кнопку мыши и выбрать команду “вставить”).

Числа, попавшие в первую ячейку, показывают объем свободного места на диске (первое) и количество пользователей (второе число).

Все остальные числа показывают объем пользовательских файлов,  каждому пользователю принадлежит один файл.

Логика рассуждения: чтобы сохранились данные максимального числа пользователей, то нужно выбрать файлы с меньшими объемами.

Так как для нас важны меньшие объемы, то и выстроим данные по этому признаку, для этого.

Для начала выгрузим файл в Excel-таблицу: выбираем вкладку “Данные”, слева видим “Из текстового/CSV-файла”.

Путь для тех, кто пока ни разу не программист, но есть хорошая математическая логика.

Составляем пошаговый алгоритм на русском языке для будущих шагов в Ecxel:

  • копирую данные из текстового документа и вставляю их в Ecxel;
  • переношу первую ячейку правее и ниже (не удаляю, эти данные будут нужны);
  • сортирую столбец с объемами файлов по возрастанию;
  • складываю последовательно ячейки;
  • выбираю среди полученных сумм наибольшее значение, которое удовлетворяет условию задачи;
  • определяю сколько файлов вошли в эту сумму; это первый ответ;
  • нахожу разницу между заданным пределом и полученной в первой части задания суммой;
  • если убрать из записи на диск файл с максимальным объемом, то его можно будет заменить на файл большего объема, который займет и его объем и оставшуюся разницу;
  • определяю максимальный объем файла, который удалось записать на диск (результат А);
  • сортирую по убыванию все файлы пользователей;
  • так как второй вопрос задания о максимально возможном записанном файле заменяю результат А на перв и проверяю условие задачи, если выполняется, то это второй ответ, если не выполняется

Путь для тех, кто чуть-чуть освоил Питон.

Составляем пошаговый алгоритм на русском языке для Питона

  • открой файл с документами, поработай со строками, в которых записаны числа:
    • на языке Питон это выглядит так:
      • f = open(‘название файла.txt’)  (открывай этот файл)
      • data = f.readlines()  (работай со строками)
      • = data[0].split() (сообщаем Питону, что в первой строке записаны два отдельных числа)
      • s = int(s[0]) (просим Питон запомнить первое число из первой строки – общий разрешенных объем на диске; второе число в решении нашего задания участие не принимает)
  • обязательно удаляем первую строку, для вычислений она не нужна:
    • на языке Питон это выглядит так:
      • del (data[0]) 
  • задаем границы нашего цикла (от первого до последнего значения)
    • на языке Питон это выглядит так:
      • for i in range(0, len(data)):
      • data[i] = int(data[i])
  • для выполнения нашего цикла нам нужно отсортировать наши данные по возрастанию:
    • на языке Питон это выглядит так:
      • data = sorted(data)
  • задаем стартовое значение суммы: summa = 0;
  • просим Питон считать количество файлов (count) до тех пор, пока сумма объемов не превысит предельного значения (s):
    • на языке Питон это выглядит так?
      • for count in range(0, len(data)):
        • if summa + data[count] > s: break (если сумма больше, цикл закончен, выводим предыдущее значение на экран)
        • summa += data[count
      • print(count)
  • вторая часть задания:
  • определим разницу между допустимым пределом и суммой полученной в предыдущей части (d) и сравниваем ее с разницей между различными значениями объемов файлов, если разница между объемами меньше d, то выбираем наибольшее значение уменьшаемого и выводим его на экран:
    • на языке Питон это выглядит так:
      • d = s summa
      • for i in range(0, len(data)):
        • if data[i] data[count 1] <= d:
        • itog = data[i]
      • print(itog)
error: Content is protected !!
Прокрутить вверх
Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять
Отказаться
Политика конфиденциальности