(П. Финкель) В файле содержится последовательность целых чисел. Четвёрка подряд идущих чисел называется подходящей, если из них можно составить правильный IP-адрес компьютера. Найдите в последовательности все подходящие четвёрки, в составе которых есть ровно два простых числа. В ответе укажите количество таких четвёрок, а затем наибольшую сумму байтов для всех таких адресов.
Решение:
Python
from math import isqrt
def is_ip(quart: list[int]) -> bool:
return all(0 <= n <= 255 for n in quart)
def is_prime(n: int) -> bool:
if n <= 2:
return n == 2
if n & 1 == 0:
return False
for x in range(2, isqrt(n) + 1):
if n % x == 0:
return False
return True
nums = [int(x) for x in open('9012.txt')]
k, max_sum_bytes = 0, 0
for q in zip(nums, nums[1:], nums[2:], nums[3:]):
if is_ip(q) and sum(is_prime(x) for x in q) == 2:
k += 1
max_sum_bytes = max(max_sum_bytes, sum(q))
print(k, max_sum_bytes)
Ответ: \(283 \,\, 866\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене