Excel. Алгоритм подготовки данных к сортировке
1. Скопировать всё из текстового файла (CTRL+A и CTRL+C)
2. Выделить ячейки столбцов A и B и поменять их на текстовый формат
3. Перенести данные в таблицу Excel (CTRL+B)
ИЛИ
1-2-3. "Файл" "Открыть" - находим папку с нужным файлом - выбираем отображение всех типов файлов "Все файлы (*.*)"
4. Разделяем данные по столбцам с помощью "Мастер импорта текста": "Данные" - "Работа с данными" - "Текст по столбцам" - на шаге 2 отмечаем "пробел" - "Готово".
5. Сортируем данные по возрастанию и убыванию.
Python. Алгоритм решения задач на скидки
1. Отобрать все товары, которые могут участвовать в скидке.
2. К половине полученных товаров применить скидку.
3. Добавить в сумму оставшиеся товары.
Python. Алгоритм подготовки данных к сортировке
1. Открыть файл на чтение
2. Получить служебные банные из первой строки:
- содержится 1 величина - считать строку и преобразовать в число;
- содержится 2 величины - считать строку, разбить на элементы по пробелу и записать соответствующие переменные с преобразованием в целое число.
3. Создать и заполнить массив ы цикле, считывая и преобразуя строки из файла или воспользоваться генерацией списка.
Шаблон программы решения задач на “скидки”:
f = open("26.txt")
N = int(f.readline())
S = 0
discount = []
for i in range(N):
x = int(f.readline())
if x <сумма, с которой начисляется скидка>:
discount.append(x)
else:
S += x # вычисляем сумму товаров без скидки
discount.sort()
half = len(discount) // 2 # количество товаров, на которые будет сделана скидка
skidka = discount[:half] # массив товаров со скидкой
not_skidka = discount[half:] # массив товаров, на которые скидка не применяется
Summa = S + sum(skidka) * (1 - <процент скидки> / 100>) + sum(not_skidka)
# итоговая сумма = товары без скидки + товары со скидкой + товары, на которые скидка не применилась
print(Summa, skidka[- 1])
f.close()
Пример задания
Входной файл содержит заявки пассажиров, желающих сдать свой багаж в камеру хранения. В заявке указаны время сдачи багажа и время освобождения ячейки (в минутах от начала суток). Багаж одного пассажира размещается в одной свободной ячейке с минимальным номером. Ячейки пронумерованы начиная с единицы. Размещение багажа в ячейке или её освобождение происходит в течение 1 мин. Багаж можно поместить в только что освобождённую ячейку начиная со следующей минуты. Если в момент сдачи багажа свободных ячеек нет, то пассажир уходит. Определите, сколько пассажиров сможет сдать свой багаж в течение 24 ч и какой номер будет иметь ячейка, которую займут последней. Если таких ячеек несколько, укажите минимальный номер ячейки.
Входные данные
В первой строке входного файла находится натуральное число K, не превышающее 1000, – количество ячеек в камере хранения. Во второй строке – натуральное число N (N ≤ 1000), обозначающее количество пассажиров. Каждая из следующих N строк содержит два натуральных числа, каждое из которых не превышает 1440: указанное в заявке время размещения багажа в ячейке и время освобождения ячейки (в минутах от начала суток). Запишите в ответе два числа: количество пассажиров, которые смогут воспользоваться камерой хранения, и номер последней занятой ячейки.
f = open('26.txt')
K = int(f.readline()) # количество ячеек в камере хранения
N = int(f.readline()) # количество пассажиров
# создаем список из данных о времени размещения и освобождения ячейки
baggage = [] # пустой список
for i in f: # перебираем строки в файле
x = i.split() # разделяем строку по пробелу
baggage.append([int(x[0]), int(x[1])]) # преобразуем к целочисленному типу два числа строки
baggage.sort() # сортируем двумерный массив по возрастанию
cell = [0] * K # ячейки камеры хранения
# индекс элемента = номер ячейки (-1); значения элемента = время освобождения ячейки
count = 0 # кол-во пассажиров, которые воспользовались камерой хранения
number = 0 # номер последней занятой ячейки
for time in baggage: # time - элемент двумерного списка, состоящий из двух чисел:
# время размещения и освобождения ячейки
for i in range(K): # перебираем ячейки
if time[0] > cell[i]: # и проверяем сможет ли она принять текущего пассажира
cell[i] = time[1] # если да, то меняем время освобождения ячейки
count += 1 # увеличиваем количество пассажиров, воспользовавшихся камерой
number = i + 1 # сохраняем номер последней использованной ячейки
break # останавливаем поиск свободной ячейки
print(count, number)
f.close()
Ответ: 344 53