Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 3. Во входном файле заданы пары чисел. Найти k-ое по величине произведение (в порядке возрастания или убывания).
- # Пятая по величине площадь (сортировка от большего к меньшему)
- # модифицируем чтение из файла из решения прошлой задачи
- openfname = "input.txt" # имя входного файла
- k = 5
- ofile = open(openfname, "r")
- data = ofile.read().split("\n")
- data = list(map(lambda x: list(map(int, x.split())), data)) # теперь в контейнере data хранятся все строки из файла. однако, нам нужно каждую строку разделить на два числа. для этого используем конструкцию lambda (lambda - анонимная функция, после ключевого слова lambda объявляются параметры анонимной функции, после этого записывается последовательность операций над этими параметрами. в нашем случае, x - это строка, а возвращает наша анонимная функция пару чисел, записанных на этой строке
- # остается посчитать все площади
- result = [] # создаём пустой контейнер
- for i in range(len(data)): # проходимся по всему контейнеру
- result.append(data[i][0] * data[i][1]) # добавляем в контейнер result произведение i-ой пары чисел
- # теперь в result хранятся все произведения из входного файла
- result.sort() # метод sort() сортирует контейнер в порядке неубывания
- result.reverse() # так как нам нужны числа в порядке невозрастания, перевернём контейнер (последний элемент станет первым и так далее)
- print(result[k - 1]) # поскольку в контейнерах нумерация начинается с нуля, выводим не k-ый, а (k - 1)-ый элемент
- -------
- # Третья по величине площадь (сортировка от меньшего к большему)
- # модифицируем чтение из файла из решения прошлой задачи
- openfname = "input.txt" # имя входного файла
- k = 3
- ofile = open(openfname, "r")
- data = ofile.read().split("\n")
- data = list(map(lambda x: list(map(int, x.split())), data)) # теперь в контейнере data хранятся все строки из файла. однако, нам нужно каждую строку разделить на два числа. для этого используем конструкцию lambda (lambda - анонимная функция, после ключевого слова lambda объявляются параметры анонимной функции, после этого записывается последовательность операций над этими параметрами. в нашем случае, x - это строка, а возвращает наша анонимная функция пару чисел, записанных на этой строке
- # остается посчитать все площади
- result = [] # создаём пустой контейнер
- for i in range(len(data)): # проходимся по всему контейнеру
- result.append(data[i][0] * data[i][1]) # добавляем в контейнер result произведение i-ой пары чисел
- # теперь в result хранятся все произведения из входного файла
- result.sort() # метод sort() сортирует контейнер в порядке неубывания
- # так как нам нужны числа в порядке неубывания, ничего не делаем
- print(result[k - 1]) # поскольку в контейнерах нумерация начинается с нуля, выводим не k-ый, а (k - 1)-ый элемент
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement