(Р. Косов) Напишите программу, которая перебирает целые числа, меньшие \(8~700~000,\) в порядке убывания и ищет среди них те, которые содержат цифру \(1\) или цифру \(3,\) и при этом их можно представить в виде суммы четного натурального числа, являющегося полным квадратом, и натуральной степени числа \(7.\) В ответе в первом столбце таблицы запишите первые \(5\) найденных чисел в порядке убывания, а во втором столбце для каждого числа – соответствующий показатель степени числа \(7.\)
Решение:
Python
from math import isqrt
p7 = {p: 7**n for p in range(1, 20) if 7**p < 8_700_000}
n = 8_700_000
q = 0
while q < 5:
n -= 1
ns = str(n)
if '1' in ns or '3' in ns:
for p in p7:
rem = n - p7[p]
if rem & 1 == 0 and isqrt(rem) ** 2 == rem:
print(n, p)
q += 1
break
Ответ:
\(8697179 \,\, 7\)
\(8695723 \,\, 5\)
\(8693105 \,\, 4\)
\(8691047 \,\, 3\)
\(8690833 \,\, 6\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене