Рассматривается множество целых чисел, принадлежащих числовому отрезку [3721; 7752]. Необходимо найти числа, которые удовлетворяют следующим условиям:
— сумма цифр числа кратна 3;
— двоичная запись числа не заканчивается на 000.
Найдите количество таких чисел и минимальное из них.
Решение №1
counter = 0
mn = 10**10
for n in range(3721, 7752 + 1):
s = sum(map(int, str(n)))
bn = bin(n)[2:]
if (s % 3 == 0) and bn[-3:] != "000":
counter += 1
mn = min(mn, n)
print(counter, mn)
Решение №2
counter = 0
mn = 10**10
for n in range(3721, 7752 + 1):
# Математический факт: сумма цифр кратно 3, когда число кратно 3
if n % 3 == 0:
# 000 в конце 2-сс будет, только если число делится на 8
if n % 8 != 0:
counter += 1
mn = min(mn, n)
print(counter, mn)