0
0 комментариев

Здравствуйте, для решения одной задачи нужно быстро находить все числа, стостоящие из n цифр, каждая цифра — это либо 4 , либо 7. И число должно без остатка делиться на 4 и на 7.

Например 74444744444 — один из примеров для 11 цифр. Всё, что смогла выдовить моя головушка за пару часов — это данный код . Работает медленно уже для n > 10, прошу помочь усовершенствовать его или поменять, если я много не знаю )

n = int(input())
s2 = int(("7"+ "4"*(n-3) + "44")
s22 = int("7" * n)
s1 = int("4"*n)
s11 = int("4" + "7"*(n-1))
 
while (s1 - 644)%700 !=0:
    s1 += 1
 
while (s2 - 644)%700 !=0:
 
    s2 += 1
a1 = [i for i in range(s1,s11 + 1,700) if str(i).replace("4","").replace("7","") == ""]
a2 = [i for i in range(s2,s22 + 1,700) if str(i).replace("4","").replace("7","") == ""]
a = a1 + a2

Изменен статус публикации
Добавить комментарий