Илье необходимо перенести файлы с одного компьютера на другой при помощи внешнего жёсткого диска.
Объём диска может быть меньше, чем требуется для переноса файлов за один раз. Свободный объём на диске и размеры файлов известны.
По заданной информации об объёме файлов на компьютере и свободном объёме на диске определите максимальное число файлов, которые могут быть перенесены за один раз на внешний жесткий диск, а также максимальный размер файла, записанного на этот диск, при условии, что перенесено наибольшее возможное число файлов.
Входные данные
В первой строке входного файла находятся два числа: (S) — размер свободного места на диске (натуральное число, не превосходящее (100~000)) и (N) — количество файлов, которые надо перенести (натуральное число, не превышающее (10~000)). В следующих (N) строках находятся значения объёмов указанных файлов (все числа натуральные, не превышающие (100)), каждое в отдельной строке.
Выходные данные
Запишите в ответе два числа: сначала наибольшее число файлов, которые могут быть перенесены на внешний жёсткий диск за один раз, затем максимальный размер перенесённого файла, при условии, что перенесено наибольшее возможное число файлов. Если вариантов переноса несколько, выберите тот, при котором будет перенесён наибольший файл.
Пример входного файла:
(100) (4)
(80)
(30)
(50)
(40)
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов: (30) и (40), (30) и (50) или (40) и (50). Наибольший объём файла из перечисленных пар — (50), поэтому ответ для приведённого примера:
(2) (50)
Файл с данными
Решение:
Python
f = open('input26_08.txt')
S, N = tuple(map(int, f.readline().split()))
file_size = list(map(int, f.readlines()))
file_size.sort()
num_files = 0 # число файлов, которое можно записать на диск
max_size = 0 # максимальный размер файла
used_cap = 0 # использованное место на диске
curr_file = 0 # текущий номер файла
for i in range(N):
if used_cap + file_size[i] <= S: # пока есть место на диске
used_cap += file_size[i] # записываем файл, учитываем это в использованном объеме
max_size = file_size[i] # максимальный размер файла - размер последнего записанного
else: # место на диске закончилось
num_files = i # количество записанных файлов (i=0,1,2,... а кол-во записанных файлов 1,2,3,...)
curr_file = i - 1 # номер элемента массива для последнего записанного файла
break
if used_cap < S: # если на диске осталось свободное место
used_cap -= file_size[curr_file] # удаляем последний записанный файл
for i in range(N-1, curr_file-1, -1): # и пытаемся записать на его место файл большего размера
if used_cap + file_size[i] <= S: # если это удается, обновляем размер использованного объема
used_cap += file_size[i]
max_size = file_size[i] # максимальный размер файла - это размер последнего записанного файла
break
print(num_files, max_size)
Ответ: (3105) (75)
Скачать материал
Скачать материал
- Сейчас обучается 117 человек из 41 региона
- Сейчас обучается 80 человек из 30 регионов
Описание презентации по отдельным слайдам:
-
1 слайд
Решение задач линии 26 компьютерного ЕГЭ на языке программирования Python
Сабитова Д.А.
Методист отдела дистанционного образования -
2 слайд
Задание КЭГЭ линии №26
Обработка массива целых чисел
Вариант 15. ЕГЭ-2021. Крылов С.С, Чуркина Т.Е.
Илье необходимо перенести файлы с одного компьютера на другой при помощи внешнего жесткого диска.
Объём диска может быть меньше чем требуется для переноса всех файлов за один раз. Свободный объём на диске и размеры файлов известны.
По заданной информации об объёме файлов на компьютере и свободном объёме на диске определите максимальное число файлов, которые могут быть перенесены за один раз на внешний жесткий диск, а также максимальный размер файла, записанного на этот диск, при условии что перенесено наибольшее возможное число файлов.
Входные данные.
В первой строке входного файла находятся два числа: S -размер свободного места на диске (натуральное число, не превышающее 100 000) и N — количество файлов, которые надо перенести (натуральное число не превышающее 10 000). В следующих N строках находятся значения объёмов указанных файлов (все числа натуральные, не превышающее 100), каждое в отдельной строке.
Выходные данные.
Запишите в ответ два числа: сначала наибольшее число файлов, которые могут быть перенесены на внешний жёсткий диск за один раз, затем максимальный размер перенесённого файла, при условии, что перенесено наибольшее возможное число файлов. Если вариантов переноса несколько выберите тот, при котором будет перенесён наибольший файл. -
3 слайд
Вариант 15. ЕГЭ-2021. Крылов С.С, Чуркина Т.Е.
Идея решения
Считываем все объемы в массив, сортируем их по возрастанию.
На каждом шаге суммируем очередной объем, пока не достигнем заданного объема диска, и подсчитываем количество пользователей.
Если сумма объемов совпала, то задача решена, иначе нужно убрать последний суммированный объем и прибавить следующий за ним объем.
Так будем выполнять до тех пор, пока не достигнем необходимого объема
Задание КЭГЭ линии №26
Обработка массива целых чисел -
-
-
6 слайд
Задание КЭГЭ линии №26
Обработка массива целых чисел
21) (А.М. Кабанов, г. Тольятти) В магазине электроники раз в месяц проводится распродажа. Из всех товаров выбирают K товаров с самой большой ценой и делают на них скидку в 20%. По заданной информации о цене каждого из товаров и количестве товаров, на которые будет скидка, определите цену самого дорогого товара, не участвующего в распродаже, а также целую часть от суммы всех скидок.
Входные и выходные данные. В первой строке входного файла 26-k1.txt находятся два числа, записанные через пробел: N – общее количество цен (натуральное число, не превышающее 10 000) и K – количество товаров со скидкой. В следующих N строках находятся значения цены каждого из товаров (все числа натуральные, не превышающие 10 000), каждое в отдельной строке. Запишите в ответе два числа: сначала цену самого дорогого товара, не участвующего в распродаже, а затем целую часть от суммы всех скидок.
Пример входного файла:
10 3
1800
3600
3700
800
2600
2500
1800
1500
1900
1200При таких исходных данных ответ должен содержать два числа – 2500 и 1980. Пояснение: скидка будет на товары стоимостью 3700, 3600, 2600. Тогда самый дорогой товар без скидки стоит 2500, а сумма скидок 740+720+520 = 1980.
-
7 слайд
Задание КЭГЭ линии №26
-
8 слайд
Задание линии КЭГЭ №26
Статград от 17.03.2021. Вариант №2
В текстовом файле записан набор натуральных чисел не превышающих 1000000000. Гарантируется, что все числа различны. Необходимо определить, сколько в наборе таких пар нечётных чисел, что их среднее арифметическое тоже присутствует в файле, и чему равно наибольшее из средних арифметических таких пар -
-
10 слайд
Задание КЭГЭ линии №26
52) (А. Кабанов) В текстовом файле записан набор натуральных чисел. Гарантируется, что все числа различны. Рассматриваются пары чисел из набора, между которыми в отсортированном массиве помещаются не более 100 чисел из того же набора. Определите количество пар с суммой кратной 10, а также наименьшее среднее арифметическое таких пар.
Входные данные представлены в файле 26-52.txt следующим образом. Первая строка содержит целое число N – общее количество чисел в наборе. Каждая из следующих N строк содержит одно число, не превышающее 109.
В ответе запишите два целых числа: сначала количество пар, затем наименьшее среднее арифметическое.
Пример входного файла:
8
3
8
14
11
2
16
5
9
В примере рассмотрим пары, между которыми помещаются не более 3 чисел из набора. В данном случае есть три подходящие пары: 2 и 8, 9 и 11, 14 и 16. В ответе надо записать числа 3 и 5. -
11 слайд
Задание КЭГЭ линии №26
Задача №52 -
12 слайд
Задание КЭГЭ линии №26
43) Предприятие производит оптовую закупку изделий A и Z, на которую выделена определённая сумма денег. У поставщика есть в наличии партии этих изделий различных модификаций по различной цене. На выделенные деньги необходимо приобрести как можно больше изделий A (независимо от модификации). Закупать можно любую часть каждой партии. Если у поставщика закончатся изделия A, то на оставшиеся деньги необходимо приобрести как можно больше изделий Z. Известна выделенная для закупки сумма, а также количество и цена различных модификаций данных изделий у поставщика. Необходимо определить, сколько будет закуплено изделий Z и какая сумма останется неиспользованной. Если возможно несколько вариантов решения (с одинаковым количеством закупленных изделий Z), нужно выбрать вариант, при котором оставшаяся сумма максимальна.
Входные данные представлены в файле 26-42.txt следующим образом. Первая строка входного файла содержит два целых числа: N – общее количество партий изделий у поставщика и S – сумма выделенных на закупку денег (в рублях). Каждая из следующих N строк описывает одну партию изделия: сначала записана буква A или Z (тип изделия), а затем – два целых числа: цена одного изделия в рублях и количество изделий в партии. Все данные в строках входного файла разделены одним пробелом.
В ответе запишите два целых числа: сначала количество закупленных изделий типа Z, затем оставшуюся неиспользованной сумму денег. -
13 слайд
Задание КЭГЭ линии №26
Задача №43 -
14 слайд
Задание КЭГЭ линии №26
39) Для перевозки партии грузов различной массы выделен грузовик, но его грузоподъёмность ограничена, поэтому перевезти сразу все грузы не удастся. Грузы массой от 180 до 200 кг грузят в первую очередь, выбирая грузы по убыванию массы, начиная с самого тяжёлого. На оставшееся после этого место стараются взять как можно большее количество грузов. Если это можно сделать несколькими способами, выбирают тот способ, при котором самый большой из выбранных грузов имеет наибольшую массу. Если и при этом условии возможно несколько вариантов, выбирается тот, при котором наибольшую массу имеет второй по величине груз, и т.д. Известны количество грузов, масса каждого из них и грузоподъёмность грузовика. Необходимо определить количество и общую массу грузов, которые будут вывезены при погрузке по вышеописанным правилам.
Входные данные представлены в файле 26-39.txt следующим образом. В первой строке входного файла записаны два целых числа: N – общее количество грузов и M – грузоподъёмность грузовика в кг. Каждая из следующих N строк содержит одно целое число – массу груза в кг. В ответе запишите два целых числа: сначала максимально возможное количество грузов, затем их общую массу. -
15 слайд
Задание КЭГЭ линии №26
Задача №39 -
16 слайд
Задание КЭГЭ линии №26
Задача №39 -
17 слайд
Задание КЭГЭ линии №26
Задача №39
Найдите материал к любому уроку, указав свой предмет (категорию), класс, учебник и тему:
6 153 788 материалов в базе
- Выберите категорию:
-
Выберите учебник и тему
- Выберите класс:
-
Тип материала:
-
Все материалы
-
Статьи
-
Научные работы
-
Видеоуроки
-
Презентации
-
Конспекты
-
Тесты
-
Рабочие программы
-
Другие методич. материалы
-
Найти материалы
Материал подходит для УМК
Другие материалы
- 28.05.2021
- 152
- 0
- 28.05.2021
- 179
- 4
Вам будут интересны эти курсы:
-
Курс повышения квалификации «Информационные технологии в деятельности учителя физики»
-
Курс повышения квалификации «Внедрение системы компьютерной математики в процесс обучения математике в старших классах в рамках реализации ФГОС»
-
Курс повышения квалификации «Организация работы по формированию медиаграмотности и повышению уровня информационных компетенций всех участников образовательного процесса»
-
Курс повышения квалификации «Облачные технологии в образовании»
-
Курс повышения квалификации «Сетевые и дистанционные (электронные) формы обучения в условиях реализации ФГОС по ТОП-50»
-
Курс повышения квалификации «Использование компьютерных технологий в процессе обучения в условиях реализации ФГОС»
-
Курс профессиональной переподготовки «Теория и методика обучения информатике в начальной школе»
-
Курс повышения квалификации «Современные тенденции цифровизации образования»
-
Курс повышения квалификации «Специфика преподавания дисциплины «Информационные технологии» в условиях реализации ФГОС СПО по ТОП-50»
-
Курс повышения квалификации «Применение интерактивных образовательных платформ на примере платформы Moodle»
Пройти тестирование по этим заданиям
Вернуться к каталогу заданий
Версия для печати и копирования в MS Word
1
Документ объемом 10 Мбайт можно передать с одного компьютера на другой двумя способами:
А) Сжать архиватором, передать архив по каналу связи, распаковать
Б) Передать по каналу связи без использования архиватора.
Какой способ быстрее и насколько, если
– средняя скорость передачи данных по каналу связи составляет 218 бит в секунду,
– объем сжатого архиватором документа равен 30% от исходного,
– время, требуемое на сжатие документа – 7 секунд, на распаковку – 1 секунда?
В ответе напишите букву А, если способ А быстрее или Б, если быстрее способ Б. Сразу после буквы напишите количество секунд, насколько один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23. Слов «секунд», «сек.», «с.» к ответу добавлять не нужно.
2
Документ объемом 5 Мбайт можно передать с одного компьютера на другой двумя способами:
А) Сжать архиватором, передать архив по каналу связи, распаковать.
Б) Передать по каналу связи без использования архиватора.
Какой способ быстрее и насколько, если
– средняя скорость передачи данных по каналу связи составляет 218 бит в секунду,
– объем сжатого архиватором документа равен 80% от исходного,
– время, требуемое на сжатие документа – 35 секунд, на распаковку – 3 секунды?
В ответе напишите букву А, если способ А быстрее или Б, если быстрее способ Б. Сразу после буквы напишите количество секунд, насколько один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23.
Слов «секунд», «сек.», «с.» к ответу добавлять не нужно.
3
Документ объемом 5 Мбайт можно передать с одного компьютера на другой двумя способами:
А) Сжать архиватором, передать архив по каналу связи, распаковать
Б) Передать по каналу связи без использования архиватора.
Какой способ быстрее и насколько, если
– средняя скорость передачи данных по каналу связи составляет 218 бит в секунду,
– объем сжатого архиватором документа равен 20% от исходного,
– время, требуемое на сжатие документа – 7 секунд, на распаковку – 1 секунда?
В ответе напишите букву А, если способ А быстрее или Б, если быстрее способ Б. Сразу после буквы напишите количество секунд, насколько один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23. Слов «секунд», «сек.», «с.» к ответу добавлять не нужно.
Источник: Яндекс: Тренировочная работа ЕГЭ по информатике. Вариант 1.
4
Документ объемом 10 Мбайт можно передать с одного компьютера на другой двумя способами:
А) Сжать архиватором, передать архив по каналу связи, распаковать
Б) Передать по каналу связи без использования архиватора.
Какой способ быстрее и насколько, если
-средняя скорость передачи данных по каналу связи составляет 218 бит в секунду
-объем сжатого архиватором документа равен 25% от исходного,
-время, требуемое на сжатие документа – 8 секунд, на распаковку – 2 секунда?
В ответе напишите букву А, если способ А быстрее или Б, если быстрее способ Б. Сразу после буквы напишите количество секунд, насколько один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23. Слов «секунд», «сек.», «с.» к ответу добавлять не нужно.
Источник: Яндекс: Тренировочная работа ЕГЭ по информатике. Вариант 2.
5
Документ объёмом 20 Мбайт можно передать с одного компьютера на другой
двумя способами.
А. Сжать архиватором, передать архив по каналу связи, распаковать.
Б. Передать по каналу связи без использования архиватора.
Какой способ быстрее и насколько, если:
• средняя скорость передачи данных по каналу связи составляет 220 бит в секунду;
• объём сжатого архиватором документа равен 20% исходного;
• время, требуемое на сжатие документа, – 5 секунд, на распаковку – 1 секунда?
В ответе напишите букву А, если быстрее способ А, или Б, если быстрее способ Б. Сразу после буквы напишите число, обозначающее, на сколько секунд один способ быстрее другого.
Так, например, если способ Б быстрее способа А на 23 секунды, в ответе нужно написать Б23.
Единиц измерения «секунд», «сек.», «с.» к ответу добавлять не нужно.
Источник: Демонстрационная версия ЕГЭ—2013 по информатике.
Пройти тестирование по этим заданиям
На уроке рассмотрен материал для подготовки к ЕГЭ по информатике, разбор 26 задания. Объясняется тема о программной обработке целочисленной информации с использованием алгоритмов сортировки.
26-е задание: «Обработка целочисленной информации с использованием сортировки»
Уровень сложности
— высокий,
Требуется использование специализированного программного обеспечения
— да,
Максимальный балл
— 2,
Примерное время выполнения
— 35 минут.
Проверяемые элементы содержания: Умение обрабатывать целочисленную информацию с использованием сортировки
Выполнение 26 задания ЕГЭ
Плейлист видеоразборов задания на YouTube:
Задание демонстрационного варианта 2022 года ФИПИ
26_1.
26_1. Демоверсия варианта ЕГЭ по информатике 2021, ФИПИ:
Задание выполняется с использованием прилагаемых файлов
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.
Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные.
В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке.
Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
100 4 80 30 50 40
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера:
2 | 50
Ответ: 568 | 50
✍ Решение:
-
Проанализируем возможное решение:
- Чтобы вычислить максимальное число пользователей, чьи файлы можно сохранить в архиве, необходимо брать файлы с наименьшим объемом , пока суммарный объем этих файлов меньше свободного объема диска. Т.е. для нижеуказанного примера, будем брать
30 + 40
. Файл объемом 50 мы взять уже не сможем, так как70 + 50 = 120
, а это уже больше указанного объема диска (100):
100 4 80 30 50 40
100 - 70 = 30
30 - 40 <= запаса (30) 40 - 40 <= запаса (30) 50 - 40 <= запаса (30) 80 - 40 > запаса (30), не подходит
Теперь построим алгоритм на языках программирования:
PascalABC.net:
|
||
Python:
|
||
С++: |
Ответ: 568 | 50
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
26_2.
26_2:
Задание выполняется с использованием прилагаемых файлов
В магазине электроники раз в месяц проводится распродажа. Из всех товаров выбирают K
товаров с самой большой ценой и делают на них скидку в 20%. По заданной информации о цене каждого из товаров и количестве товаров, на которые будет скидка, определите цену самого дорогого товара, не участвующего в распродаже, а также целую часть от суммы всех скидок.
Входные и выходные данные.
В первой строке входного файла 26-k1.txt
находятся два числа, записанные через пробел: N
– общее количество цен (натуральное число, не превышающее 10 000) и K
– количество товаров со скидкой. В следующих N
строках находятся значения цены каждого из товаров (все числа натуральные, не превышающие 10 000), каждое в отдельной строке.
Запишите в ответе два числа: сначала цену самого дорогого товара, не участвующего в распродаже, а затем целую часть от суммы всех скидок.
Пример входного файла:
10 3 1800 3600 3700 800 2600 2500 1800 1500 1900 1200
При таких исходных данных ответ должен содержать два числа – 2500 и 1980.
Пояснение: скидка будет на товары стоимостью 3700, 3600, 2600. Тогда самый дорогой товар без скидки стоит 2500, а сумма скидок 740+720+520 = 1980.
Ответ: 9000 | 190680
✍ Решение:
-
Теперь построим алгоритм на языках программирования:
PascalABC.net:
|
||
Python:
|
||
С++: |
📹 YouTube здесь
📹 Видеорешение на RuTube здесь
В этом видео расскажу способ решения 26 зания из информатики ЕГЭ 2021 в Excel.
Индивидуальные занятия: Telegram @Vadukk
Задача:
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов. Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
- Категория
- Инструкции
Привет! В этой статье посмотрим некоторые задачи из 26 задания ЕГЭ по информатике.
Стоит отменить, что задачи из 26 задания являются одними из самых сложных во всем экзамене, и найти какой-то конкретный шаблон для всех типов задач не получится.
Но обычно в 26 задании нужно использовать сортирку.
Решать задачи будем преимущественно на языке Python.
Задача (Классическая, Демо 2021)
Системный администратор раз в неделю создаёт архив пользовательских файлов. Однако объём диска, куда он помещает архив, может быть меньше, чем суммарный объём архивируемых файлов.
Известно, какой объём занимает файл каждого пользователя.
По заданной информации об объёме файлов пользователей и свободном объёме на архивном диске определите максимальное число пользователей, чьи файлы можно сохранить в архиве, а также максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Входные данные.
В первой строке входного файла находятся два числа: S – размер свободного места на диске (натуральное число, не превышающее 10 000) и N – количество пользователей (натуральное число, не превышающее 1000). В следующих N строках находятся значения объёмов файлов каждого пользователя (все числа натуральные, не превышающие 100), каждое в отдельной строке.
Запишите в ответе два числа: сначала наибольшее число пользователей, чьи файлы могут быть помещены в архив, затем максимальный размер имеющегося файла, который может быть сохранён в архиве, при условии, что сохранены файлы максимально возможного числа пользователей.
Пример входного файла:
При таких исходных данных можно сохранить файлы максимум двух пользователей. Возможные объёмы этих двух файлов 30 и 40, 30 и 50 или 40 и 50. Наибольший объём файла из перечисленных пар – 50, поэтому ответ для приведённого примера:
Решение:
Первый способ (с помощью Excel).
Решим задачу с помощью Excel. Чтобы открыть текстовый файл в программе Excel, выбираем Файл->Открыть, выбираем нужную папку и указываем, чтобы в папке были видны все типы файлов.
И выбираем наш текстовый файл.
Выскочит окно Мастер текстов (импорт). Здесь оставляем выбранный пункт с разделителями и кликаем Далее.
В следующем окне поставим ещё галочку пробел. В итоге Символами-разделителем будут знак табуляции и пробел.
Кликаем ещё раз Далее и Готово.
Наши данные вставятся, как нужно!
Число 8200 (размер свободного места) нужно запомнить или записать на черновике. Число 970 (количество файлов) нам в принципе не нужно при таком подходе решения.
Теперь удаляем первую строчку. Выделяем две ячейки в первой строчке, через контекстное меню мыши нажимаем Удалить…. Выбираем ячейки, со сдвигом вверх.
1. Найдём максимальное количество файлов.
Выделяем весь столбец A и сортируем его по возрастанию.
Теперь выделяем ячейки сверху мышкой, а справа в нижней части программы будет показываться сумма выделенных ячеек.
Мы должны выделить максимальное количество ячеек, но чтобы сумма не превышала число 8200.
Получается максимальное количество файлов, которое можно сохранить, равно 568.
2. Найдём максимальный размер файла при максимальном количестве файлов.
Если мы сохраним максимальное количество файлов, то у нас ещё останется свободное место 8200-8176=24, т.к. сумма выделенных ячеек равна 8176.
Мы можем заменить наибольший файл (последняя выделенная ячейка равная 29) ещё большим файлом, размер которого не превышает 24+29=53.
Если покрутим таблицу вниз, то найдём такой файл размером 50. Это и будет наибольший файл при максимальном количестве файлов.
Ответ получается 568 50.
Второй способ (с помощью Python).
f=open('26.txt') st = f.readline().split() s=int(st[0]) n=int(st[1]) a=[] #Записываем данные в список a for i in range(n): x=int(f.readline()) a.append(x) #Сортируем список a.sort() b=[] for i in range(n): if sum(b) + a[i] <= s: b.append(a[i]) else: break b=b[:-1] for i in range(len(a)-1, -1, -1): if sum(b) + a[i] <= s: b.append(a[i]) break print(len(b), b[-1])
В начале подвязываемся к файлу. С помощью команды readline() считываем первую строчку. С помощью команды split() разбиваем строчку по пробелу на два числа. Переменная st — это список. В st[0] — будет подстрока с первым числом, в st[1] со вторым.
Переменная s — это размер свободного пространства на диске, n — это количество пользователей. Мы должны использоваться функцию int(), чтобы перевести из текстового типа данных в целый числовой.
Заводим пустой список a. В него мы будем помещать все значения объёмов пользователей, которые идут ниже по файлу. Зачитываем последующие числа в список a, превращая их в целый тип данных.
Команда .sort() сортирует (раскладывает по порядку) по возрастанию элементы списка.
Заводим список b. В него будем класть элементы, которые записываем на диск. Т.к. числа отсортированы, то, начиная с самого маленького файла, мы сможем заполнить диск максимальным количеством файлов.
С помощью цикла пробегаемся по всем элементам. В начале проверяем, есть ли место для очередного элемента, а потом записываем элемент в список b. Таким образом, сможем найти максимальное количество.
Чтобы найти максимальный элемент при максимальном количестве, удаляем из списка b последний самый большой элемент.
Пробегаемся по списку a, начиная с конца. Ищем кем можно заменить удалённый элемент. Мы идём с конца, поэтому в приоритете будут самый большие элементы.
После того, как найденный элемент будет умещаться в список b, можно печатать ответ.
Ответ:
Задача (Двумерные списки)
В лесничестве саженцы сосны высадили параллельными рядами, которые пронумерованы идущими подряд натуральными числами. Растения в каждом ряду пронумерованы натуральными числами начиная с единицы.
По данным аэрофотосъёмки известно, в каких рядах и на каких местах растения не прижились. Найдите ряд с наибольшим номером, в котором есть ровно 13 идущих подряд свободных мест для посадки новых сосен, таких, что непосредственно слева и справа от них в том же ряду растут сосны. Гарантируется, что есть хотя бы один ряд, удовлетворяющий этому условию. В ответе запишите два целых числа: наибольший номер ряда и наименьший номер места для посадки из числа найденных в этом ряду подходящих последовательностей из 13 свободных мест.
Входные данные.
В первой строке входного файла находится число N — количество прижившихся саженцев сосны (натуральное число, не превышающее 20 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 100 000: номер ряда и номер места в этом ряду, на котором растёт деревце.
Выходные данные.
Два целых неотрицательных числа: наибольший номер ряда и наименьший номер места в выбранной последовательности из 13 мест, подходящих для посадки новых сосен.
Типовой пример организации входных данных:
7
40 3
40 7
60 33
50 125
50 129
50 68
50 72
Для приведённого примера, при условии, что необходимо 3 свободных места, ответом является пара чисел: 50; 69.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Решение:
f=open('26_dm.txt') n=int(f.readline()) a=[0]*100001 for i in range(0, 100001): a[i]=[] #Заполняем списки for i in range(0, n): s=f.readline() b=s.split() a[int(b[0])].append(int(b[1])) #Сортируем списки for i in range(0, len(a)): a[i].sort() flag_stop=0 for i in range(len(a)-1, -1, -1): for j in range(0, len(a[i])-1): if a[i][j+1]-a[i][j]==14: print(i, a[i][j]+1) flag_stop=1 break if flag_stop==1: break
Всего у нас может быть сто тысяч рядов. Поэтому мы заводим 100000 списков. Каждый список — это очередной ряд. Но в программе завели 1000001, т.к. нулевой список использоваться не будет.
В каждый ряд добавляются номера деревьев. Это и будут элементы для каждого списка. Если не будет деревьев в ряду, то список останется пустым.
В программе мы сортируем каждый список, чтобы числа все шли в порядке возрастания.
Если в каком-нибудь списке числа имеют разницу в 14 единиц, то значит между ними ровно 13 свободных мест. Например, числа 10 и 24. Между ними 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23. Всего 13 чисел.
Чтобы проанализировать двумерный массив, используем вложенные циклы. Ряды перебираем сверху вниз. Как только найдём нужный ряд, выйдем из цикла, и в переменной i будет наибольший нужный ряд.
Сами же ряды перебираем в порядке возрастания. Как только между числами разница будет в 14 единиц, то значение j+1 наименьший свободный номер из промежутка в 13 деревьев.
Чтобы вовремя выйти из вложенных циклов, используем дополнительный флаг (переменную flag_stop).
Ответ:
Задача (Демо 2023)
В магазине для упаковки подарков есть N кубических коробок. Самой интересной считается упаковка подарка по принципу матрёшки — подарок упаковывается в одну из коробок, та в свою очередь в другую коробоку и т.д. Одну коробку можно поместить в другую, если длина её стороны хотя бы на 3 единицы меньше длины стороны другой коробки. Определите наибольшее количество коробок, которое можно использовать для упаковки одного подарка, и максимально возможную длину стороны самой маленькой коробки, где будет находиться подарок. Размер подарка позволяет поместить его в самую маленькую коробку.
Выходные данные
В первой строке входного файла находится число N — количество коробок в магазине (натуральное число, не превышающая 10 000). В следующих N строках находятся значения длин сторон коробок (все числа натуральные, не превышающие 10 000), каждое — в отдельной строке.
Запишите в ответе два целых числа: сначала наибольшее количество коробок, которое можно использовать для упаковки одного подарка, затем максимально возможную длину стороны самой маленькой коробки в таком наборе.
Типовой пример организации данных во входном файле.
5
43
40
32
40
30
Пример входного файла приведён для пяти коробок и случая, когда минимальная допустимая разница между длинами сторон коробок, подходящих упаковки «матрёшки», составлят 3 единицы.
При таких исходных данных условию задачи удовлетворяют наборы коробок с длинами сторон 30, 40 и 43 или 32, 40 и 43 соответственно, т.е. количество коробок равно 3, а длина стороны самой маленькой коробки равна 32.
Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемых файлов.
Решение:
f=open('26.txt') n=int(f.readline()) a=[] for i in range(n): x=int(f.readline()) a.append(x) a.sort(reverse=True) k=1 p=a[0] for i in range(1, len(a)): if p-a[i]>=3: k=k+1 p=a[i] print(k, p)
В начале считываем все числа в массив (список) a. Сортируем их в порядке убывания.
Приступаем собирать упаковку. Начинаем с самой большой упаковки. Большую упаковку точно можно взять в наш подарок. Переменная p — это размер последний коробки, которую мы взяли. Переменная k — количество коробок в подарке на текущий момент времени.
Если следующая коробка подходит по условию, то мы её берём в наш подарок. Кто-то может подумать, что может выгоднее взять не самую большую коробку, а предпоследнего размера. Но все размеры которые будут подходить для предпоследнего элемента, точно будут подходить и для последнего, и количество упаковок точно не будет меньше, если мы берём самую большую коробку.
Дубликаты не влияют на ответы.
Если мы начинаем с самой большой коробки, то в самом конце в переменной p окажется максимальный размер самой маленькой коробки.
Ответ:
Задача (Разные типы товаров)
На закупку товаров типов A, B, C, D и E выделена определённая сумма денег. Эти товары есть в продаже по различной цене. Необходимо на выделенную сумму закупить как можно больше товаров пяти типов (по общему количеству). Если можно разными способами купить максимальное количество пяти типов товаров, то нужно выбрать способ, при котором будет закуплено как можно больше товаров типа A. Если при этих условиях есть несколько способов закупки, нужно потратить как можно меньше денег.
Определите, сколько будет закуплено товаров типа A и сколько денег останется.
Входные данные представлены в файле следующим образом. Первая строка входного файла содержит два целых числа: N – общее количество товаров и M – сумма выделенных на закупку денег (в рублях). Каждая из следующих N строк содержит целое число (цена товара в рублях) и символ (латинская буква), определяющий тип товара. Все данные в строках входного файла отделены одним пробелом.
Запишите в ответе два числа: сначала количество закупленных товаров типа A, затем оставшуюся неиспользованной сумму денег.
Пример входного файла:
6 110
40 E
50 A
50 D
30 C
20 B
10 A
В данном случае можно купить не более четырёх товаров, из них не более двух товаров типа A. Минимальная цена такой покупки 110 рублей (покупаем товары 10 A, 20 B, 30 C, 50 A). Останется 0 рублей. Ответ: 2 0.
Решение:
f=open('26-rtt.txt') s=f.readline().split() n=int(s[0]) m=int(s[1]) X, Y, Z = [], [], [] for i in range(n): s=f.readline().split() X.append((int(s[0]), s[1])) X.sort() sm=0 for i in range(n): if sm+X[i][0]<= m: sm=sm+X[i][0] Y.append(X[i]) else: if X[i][1]=='A': Z.append(X[i]) j=0 for i in range(len(Y)-1, -1, -1): if Y[i][1]=='A': continue if sm - Y[i][0] + Z[j][0] <= m: sm = sm - Y[i][0] + Z[j][0] Y[i] = Z[j] else: break j=j+1 count = 0 for i in range(len(Y)): if Y[i][1]=='A': count=count+1 print(count, m-sm)
В этом решении участвуют три списка. Список X — это все товары из нашего файла. Каждый товар — это отдельный список, состоящий из двух элементов: стоимости и типа товара.
После того, как список X укомплектован, сортируем его по первому значению (по цене). Таким образом, самые дешёвые товары всех типов будут находится в начале, самые в дорогие в конце. Так мы сможем найти максимальное количество, которое можно закупить на указанную сумму.
Список Y — это те товары, которые мы взяли при вычислении предыдущего шага. Переменная sm — это та сумма, которую потратим при нахождении максимального количества товаров в независимости от типа товаров.
Список Z — это те товары, которые мы НЕ взяли в предыдущем шаге, но только с типами A.
Основной секрет данной задачи заключается в том, что мы будем убирать по очереди один элемент из списка уже взятых товаров типа В и добавлять один товар типа A из списка не взятых товаров. Т.к. мы всегда один элемент убираем и один прибавляем, то количество остаётся одинаковым, т.е. максимальным. Тем самым мы стараемся сделать товаров типа A как можно больше.
Нужна максимальная экономия при заменах, чтобы можно было сделать как можно больше замен, и при это осталось как можно больше денег. Для этого всегда меняем самый большой элемент из списка Y, на самый маленький элемент из списка Z
При заменах меняем и значение суммы выбранных элементов (переменная sm).
Когда замены больше невозможны, то остаётся только посчитать количество элементов с типом A в списке Y.
Ответ:
Задача (Интересный шаблон)
Предприятие производит оптовую закупку изделий A и C, на которую выделена определённая сумма денег. У поставщика есть в наличии партии этих изделий различных модификаций по различной цене. На выделенные деньги необходимо приобрести как можно больше изделий C (независимо от модификации). Закупать можно любую часть каждой партии. Если у поставщика закончатся изделия C, то на оставшиеся деньги необходимо приобрести как можно больше изделий A. Известна выделенная для закупки сумма, а также количество и цена различных модификаций данных изделий у поставщика. Необходимо определить, сколько будет закуплено изделий A и какая сумма останется неиспользованной. Если возможно несколько вариантов решения (с одинаковым количеством закупленных изделий A), нужно выбрать вариант, при котором оставшаяся сумма максимальна.
Входные данные представлены в файле следующим образом. Первая строка входного файла содержит два целых числа: N – общее количество партий изделий у поставщика и S – сумма выделенных на закупку денег (в рублях). Каждая из следующих N строк описывает одну партию изделия: сначала записана буква A или C (тип изделия), а затем – два целых числа: цена одного изделия в рублях и количество изделий в партии. Все данные в строках входного файла разделены одним пробелом.
В ответе запишите два целых числа: сначала количество закупленных изделий типа A, затем оставшуюся неиспользованной сумму денег.
Пример входного файла:
4 1000
A 14 12
C 30 7
A 40 24
C 50 15
В данном случае сначала нужно купить изделия C: 7 изделий по 30 рублей и 15 изделий по 50 рублей. На это будет потрачено 960 рублей. На оставшиеся 40 рублей можно купить 2 изделия A по 14 рублей. Таким образом, всего будет куплено 2 изделия A и останется 12 рублей. В ответе надо записать числа 2 и 12.
Решение:
Создадим список. Каждый элемент списка будет является тоже списком из трёх элементов: тип изделия, цена изделия и количество изделий данной модификации.
Нам потребуется отсортировать строчки файла сначала по типу изделия, т.к. нужно приобрести как можно больше изделий типа C. После этого нужно сделать сортировку второго уровня, отсортировать строчки по цене. Ведь так мы сможем взять максимальное количество изделий на выделенную сумму.
Рассмотрим интересный шаблон для подобного рода задач.
a=[] a.append((5, 1, 6)) a.append((7, 7, 3)) a.append((3, 4, 5)) a.append((3, 1, 2)) a.append((3, 3, 2)) a.sort(key=lambda d: (d[0], d[1])) print(a)
Получается результат:
Видим, что сначала элементы расположились по первому числу, затем уже по второму.
Напишем решение для нашей задачи.
f=open('26_4.txt') st=f.readline().split() n=int(st[0]) s=int(st[1]) k=0 a=[] for i in range(n): st=f.readline().split() if st[0]=='A': st[0]='D' if st[0]=='C': st[0]='B' a.append((st[0], int(st[1]), int(st[2]))) a.sort(key=lambda d:(d[0], d[1])) for i in range(len(a)): for j in range(a[i][2]): if s-a[i][1]>=0: s=s-a[i][1] if a[i][0] == 'D': k=k+1 print(k, s)
Т.к. нужно в начале набрать изделий типа С как можно больше, то хотелось бы видеть именно в начале этот тип после сортировки. Чтобы добиться желаемого, обозначим букву С за букву B, а букву A за D. Сортировку по цене делаем в возрастающем порядке.
Далее пробегаемся в цикле по отсортированному списку. Во вложенном цикле покупаем один товар конкретной модификации, пока это можно сделать. Посчитываем количество товаров типа A.
Ответ:
Задача (Бинарный поиск)
В текстовом файле записан набор натуральных чисел, не превышающих 109. Гарантируется, что все числа различны. Необходимо определить, сколько в наборе таких пар чётных чисел, что их среднее арифметическое тоже присутствует в файле, и чему равно наибольшее из средних арифметических таких пар.
Входные данные.
Первая строка входного файла содержит целое число N — общее количество чисел в наборе. Каждая из следующих N строк содержит одно число.
В ответе запишите два целых числа: сначала количество пар, затем наибольшее среднее арифметическое.
Пример входного файла:
6
3
8
14
11
2
17
В данном случае есть две подходящие пары: 8 и 14 (среднее арифметическое 11), 14 и 2 (среднее арифметическое 8). В ответе надо записать числа 2 и 11.
Решение:
f=open('26_6.txt') n=int(f.readline()) k=0 mx=0 a=[] for i in range(n): x=int(f.readline()) a.append(x) a.sort() for i in range(0, len(a)-1): if a[i]%2==0: for j in range(i+1, len(a)): if a[j]%2==0: sr = (a[i] + a[j]) // 2 # Бинарный поиск l=0 r=len(a)-1 index=0 while(l <= r): index = (r + l) // 2 if a[index] == sr: k=k+1 mx=max(mx, a[index]) break if a[index] < sr: l=index+1 else: r=index-1 print(k, mx)
В начале записываем все числа в массив. Сортируем все числа, как обычно в 26 задании из ЕГЭ по информатике.
После идут два вложенных цикла — мы перебираем все пары в массиве a. Берём только чётные числа.
Чтобы найти число в отсортированном массиве воспользуемся «бинарным поиском». Об этом приёме подробно рассказано в этой статье.
Ответ:
Надеюсь, Вам повезёт при решении 26 задания на ЕГЭ по информатике.
Александр, будут ли разборы задач с чередующимися красными и синими коробками(как в 4 варианте сборника Крылова и Чуркиной)? Писал в школе пробник по этому варианту, и набрал 95 баллов, спасибо вам за отличные уроки, это очень эффективная подготовка
Спасибо за отзыв!) Посмотрю эту задачку, если что, разберу.
Александр, полагаю, у вас опечатка в задаче с «Интересным шаблоном».
Последняя строчка решения: «Посчитываем количество товаров типа С.» — В задаче говориться о типах А.
В наши дни иметь несколько компьютеров – это нормально. Вы можете использовать стационарный компьютер, ноутбук, нетбук и т.д. Когда у вас несколько компьютеров, возникает вопрос — как перенести данные с компьютера на компьютер. К счастью, передать файлы между двумя компьютерами проще, чем вы думаете.
Дальше мы расскажем про 10 разных способов, как перенести данные с компьютера на компьютер.
1. Домашняя группа Windows
Если два компьютера работают на Windows 7 или более новой версии, тогда самым быстрым и простым способ перенести данные между этими компьютерами – это использовать Домашнюю группу Windows.
Создать Домашнюю группу в Windows можно с помощью нажатия одной кнопки. Главный минус этого метода заключается в том, что оба компьютера должны находиться в одной сети.
Для начала откройте меню «Пуск» и напишите «Домашняя группа».
Дальше нажмите кнопку «Создать домашнюю группу».
После этого следуйте инструкциям на экране.
В конце вы получите пароль. Просто скопируйте и сохраните его.
Вот и все! Всякий раз, когда вам нужно будет перенести данные с компьютера на компьютер, запустите проводник и выберите опцию «Домашняя группа». В первый раз вам будет предложено ввести пароль, который вы получили раньше.
Если вам нужно будет перенести новый файл или папку на другой компьютер, просто щелкните по ней правой кнопкой мыши и выберите «Поделиться > Домашняя группа».
2. USB-накопитель или внешний жесткий диск
Также вы можете использовать USB-накопитель или внешний жесткий диск, чтобы перенести данные с компьютера на компьютер. Это хороший способ, если вам нужно передать несколько файлов. Кроме того, этот метод не требует подключения к сети.
Мы рекомендуем использовать более быстрые внешние накопители или USB 3.0 порт для быстрой скорости чтения и записи.
Конечно, чтобы получить максимальную скорость передачи файлов, вам нужно подключить внешние накопители к правильным портам. Как правило, USB 3.0 порты имеют синий цвет.
3. Используйте специальный кабель для передачи файлов
Если вы не хотите копировать данные на внешний накопитель, после чего переносить их на другой компьютер, тогда используйте специальные кабели для передачи файлов. Такие специальные кабели, например Belkin Easy Transfer (F5U279), позволяют вам подключать два компьютера через USB порты, чтобы вы могли легко обмениваться файлами и папками между ними. Кабель для передачи файлов особенно полезен, когда у вас ноутбук и настольный компьютер.
Итак, вот как это работает. Вставьте оба конца кабеля в USB порты на компьютерах (поддерживается только Windows). Откройте проводник (Win + E), и там вы увидите новое программное обеспечение рядом с USB или CD-диском. Запустите это программное обеспечение на обоих компьютерах. Вы увидите окно с разделенным экраном. Верхняя половина окна содержит файлы одного компьютера, а нижняя половина – другого. Теперь, скопируйте файлы с одного окна на другое, чтобы перенести их между компьютера.
Это, конечно, быстрый и удобный способ перенести данные с компьютера на компьютер, но такие кабели стоят достаточно дорого. Дальше вы узнаете несколько бесплатных способов, как передать файлы между компьютерам.
4. Синхронизация с помощью облачных сервисов (Dropbox или Google Drive)
Вы можете использовать облачные сервисы, такие как Dropbox, Google Drive, OneDrive, iCould и т.д., чтобы перенести данные с компьютера на компьютер. Плюсом данного метода является то, что облачные сервисы имеют собственные приложения на компьютер и мобильные устройства. Минус – облачные сервисы предлагают ограниченное пространство, а также вам нужно загружать файлы сначала в облако, а потом скачивать их на другом устройстве. Если у вас медленный интернет, этот способ не подходит.
Google Drive, Dropbox и OneDrive позволяют включить выборочную синхронизацию, чтобы вы могли синхронизировать только нужные вам файлы.
Кроме того, если вы используете Dropbox, не забудьте включить функцию «LAN Sync». Данная функция позволяет синхронизировать файлы и папки между компьютерами в одной сети.
5. Совместное использование папок и дисков на локальном компьютере
Совместное использование дисков и папок является одним из самых старых способов, чтобы перенести данные с компьютера на компьютера.
Чтобы использовать этот метод, нажмите правой кнопкой мыши на папку, которую вы хотите перенести на другой компьютер, затем выберите опцию «Свойства».
В окне свойств перейдите на вкладку «Общий доступ», и нажмите кнопку «Поделиться».
Вы увидите окно общего доступа к файлам. Здесь выберите опцию «Все», нажмите кнопку «Добавить» и затем нажмите кнопку «Поделиться», чтобы поделиться файлом или папкой.
Вот и все! Подключитесь со второго компьютера к сети, откройте Проводник, затем нажмите на опцию «Сеть» в левой панели. Если вы используете эту функцию в первый раз, вам может быть предложено включить сетевое обнаружение. Просто нажмите на сообщение и выберите «Включить обнаружение сети и общий доступ к файлам».
6. Использовать AnySend
AnySend – это одно из моих любимых приложений, которое позволяет легко обмениваться файлами и папками между компьютерами, и даже мобильными устройствами. Просто установите приложение на все свои компьютеры, смартфоны и планшеты. Когда вы находитесь в одной сети, откройте приложение AnySend на обоих компьютерах, скопируйте необходимые данные в буфер обмена и перенесите файлы и папки простым щелчком на другой компьютер.
7. Отправить данные по электронной почте
Это старая школа. Но, если вам нужно перенести небольшое количество данных с компьютера на компьютера, вы можете использовать этот метод. При этом вам не нужно устанавливать дополнительные программы или настраивать совместный доступ к файлам в сети.
Для начала создайте архив из файлов, которые вы хотите отправить. Затем создайте электронное письмо, загрузите сжатые файлы в виде вложения, и отправьте их по электронной почте. После этого откройте электронную почту на другом компьютере и скачайте вложение.
Вам следует помнить, что, как правило, вложения в электронных письмах ограничивают 25 МБ. Если вам нужно перенести данные с компьютера на компьютера больше этого размера, тогда используйте другие способы.
8. Airdrop для Mac
Функция Airdrop на компьютерах Mac напоминает Домашнюю группу в Windows, но она более функциональна и проста в использовании.
Для начала откройте Finder на обоих компьютерах Mac, затем выберите «Airdrop» в левой панели.
Как только вы откроете Airdrop на обоих компьютерах MAC, вы увидите обе системы в главном окне. Просто перетащите файл или папку в другую систему в окне Airdrop. Вот и все, файл будет автоматически перенесен на другой компьютер.
9. Перенести данные через FTP
Как и передача файлов по электронной почте, обмен данными через FTP является довольно старым, но рабочим способом. Большинство опытных пользователей используют этот метод для совместного использования и передачи файлов. Создание собственного FTP-сервера напоминает создание собственного облака. Тем не менее, этот процесс может оказаться сложным для новичков.
10. Перенести данные через Bluetooth
Большинство настольных компьютеров не имеют встроенного Bluetooth, но ноутбуки и смартфоны оборудованы Bluetooth датчиками. Таким образом, вы можете использовать Bluetooth, чтобы перенести данные с ноутбука на ноутбук или мобильное устройство.
Подведение итогов
Надеемся, что наша статья помогла вам перенести данные с компьютера на компьютер. Поделитесь в комментариях ниже своими мыслями и опытом о том, как вы переносите различные данные между компьютерами.
Загрузка…