Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Прошу помочь решить задачу на Python

Meps Mepsikovich Ученик (73), открыт 1 неделю назад
Недавно у одного известного исполнителя появилась новая песня. Он хочет загрузить её в VK Музыку. Перед пиар-менеджером встала задача — выбрать длительность в секундах для трека, который в итоге будет представлен в VK Музыке.

В оригинале песня длится t секунд. Можно изменить её не более чем на d
секунд, при это длительность песни должна являться натуральным числом. И главное, поскольку это число должно быть красивым, то длительность также должна иметь не более трёх делителей.

Посчитайте количество способов выбрать длительность трека, с учётом двух перечисленных выше условий.
Выведите одно целое число - количество способов выбрать длительность трека.
Пример 1
Входные данные

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

7
Пример 2
Входные данные

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

12
2 ответа
Анатолий Зяблин Просветленный (28315) 1 неделю назад
Держи
 def count_divisors(n): 
"""Функция для подсчета количества делителей числа n."""
if n < 1:
return 0
count = 0
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
count += 1 # Делитель i
if i != n // i:
count += 1 # Делитель n // i
return count

def count_possible_durations(t, d):
"""Функция для подсчета возможных длительностей трека."""
count = 0
for duration in range(max(1, t - d), t + d + 1):
if count_divisors(duration) <= 3:
count += 1
return count

# Примеры использования
t1, d1 = 4, 6
print(count_possible_durations(t1, d1)) # Вывод: 7

t2, d2 = 180, 30
print(count_possible_durations(t2, d2)) # Вывод: 12
GGG Просветленный (37450) 1 неделю назад
 def count_divisors(n): 
count = 0
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
count += 1 if n // i == i else 2
return count

t, d = map(int, input().split())
count = 0
for i in range(max(1, t - d), t + d + 1):
if count_divisors(i) <= 3:
count += 1
print(count)
Похожие вопросы