Объяснение: Г - кол-во страниц со словом "Горло", К - со словом "Корабль", Н - со словом "Нос".
На запрос "Горло|Корабль|Нос" будет выведено общее кол-во страниц, содержащих хотя-бы одно из этих слов, значит нам нужно посчитать сколько всего уникальных страниц:
1) во-первых, запросов, содержащих и "Горло" и "Корабль" ноль, значит всего страниц хотя-бы Г + К = 45 + 40 = 85.
2) Страниц, содержащих и Н и К - 25, всего Н = 30, значит страниц, не содержащих К, но содержащих Н: 30 - 25 = 5. Но страниц, содержащих Н и Г - 10.
Значит, страниц, содержащих все 3 слова хотя-бы 5. или же страниц, не содержащих ничего кроме Н: -5. Тогда, страниц только с К: 40 - 25 = 15.
Только с Г: 45 - 10 = 30.
С Н: 30(т.к в предыдущие разы мы не учитывали пересечения)
Всего уникальных страниц с этими словами: 15 + 30 + 30 = 75
Решение состоит из двух частей: функция которая составляет словарь простых делителей и их степени, и основной код, который отвечает за вызов этой функции и генерацию строки вывода.
В функции 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())])
75
Объяснение: Г - кол-во страниц со словом "Горло", К - со словом "Корабль", Н - со словом "Нос".
На запрос "Горло|Корабль|Нос" будет выведено общее кол-во страниц, содержащих хотя-бы одно из этих слов, значит нам нужно посчитать сколько всего уникальных страниц:
1) во-первых, запросов, содержащих и "Горло" и "Корабль" ноль, значит всего страниц хотя-бы Г + К = 45 + 40 = 85.
2) Страниц, содержащих и Н и К - 25, всего Н = 30, значит страниц, не содержащих К, но содержащих Н: 30 - 25 = 5. Но страниц, содержащих Н и Г - 10.
Значит, страниц, содержащих все 3 слова хотя-бы 5. или же страниц, не содержащих ничего кроме Н: -5. Тогда, страниц только с К: 40 - 25 = 15.
Только с Г: 45 - 10 = 30.
С Н: 30(т.к в предыдущие разы мы не учитывали пересечения)
Всего уникальных страниц с этими словами: 15 + 30 + 30 = 75
Примечание:
Использовался ЯП 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)