В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
Luuunar
Luuunar
18.03.2022 21:55 •  Информатика

ПИТОН И С++ К-тая банка
У Никиты есть n банок газировки, каждая из которых имеет свой объём.

Известно, что полезнее всего пить газировку, начиная от банок большего объема и переходя к всё меньшим Никите найти k-ю по полезности банку. Встроенные алгоритмы сортировки не использовать.

Входные данные

В первой строке записаны два числа 1≤n≤105 и 1≤k≤103. Гарантируется, что k≤n.

Далее в строке записаны n целых чисел 0≤ai≤2⋅109 — объёмы банок.

Выходные данные

Вывести объём k-ой в порядке полезности банки.

Примеры
Ввод
Вывод
5 5
1 7 2 3 2
1

Показать ответ
Ответ:
dia49724zyf
dia49724zyf
19.10.2020 02:34

Примечание:

Использовался ЯП Python, версия 3.8.10.

Решение состоит из двух частей: функция которая составляет словарь простых делителей и их степени, и основной код, который отвечает за вызов этой функции и генерацию строки вывода.

В функции prime_factorization использовался достаточно оптимальный алгоритм факторизации.

Код и примеры работы есть в виде скринов.

Исходный код:

def prime_factorization(n):

   d = 2

   divisors = {}

   while n > 1:

       if n % d == 0:

           divisors[d] = divisors.get(d, 0) + 1

           n //= d

       elif d*d > n:

           d = n

       else:

           d += 1

   return divisors

if __name__ == '__main__':

   n = int(input())

   factors = prime_factorization(n)

   s = ' * '.join([f'{k}^{v}' for k, v in sorted(factors.items())])

   print(s)


, на ПИТОНЕ Разложение на простые Требуется разложить целое число N на простые множители с учётом их
, на ПИТОНЕ Разложение на простые Требуется разложить целое число N на простые множители с учётом их
0,0(0 оценок)
Ответ:
Илья164Умникум
Илья164Умникум
02.08.2020 01:16

def solve(n):

 d = 0

 while not (n&1):

   d += 1

   n //= 2

 a = [2]*d

 a[-1] *= n

 if d == 1:

   print("prime")

   return

 for x in range(3, int(n**.5)+1, 2):

   if not (n%x):

     b = a[:]

     b[-1] //= x

     b[-2] *= x

     print("many")

     print(" ".join(map(str, a)))

     print(" ".join(map(str, b)))

     return

 print("single")

 print(" ".join(map(str, a)))

from sys import stdin

for line in stdin:

 print("=== " + line.strip() + " ===")

 solve(int(line))

Дайте плз 5 звёзд, мне очень не хватает "Лучших ответов"

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота