Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 12, 2016 10:55:37

gratiani
Зарегистрирован: 2016-05-30
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Как можно упростить решение?

 k = int(input())
l = int(input())
m = int(input())
n = int(input())
d = int(input())
in0 = []
if k == 1 or l == 1 or m == 1 or n == 1:
    print(d)
elif k > d or l > d or m > d or n > d:
    print(0)
else:    
    for x in range(1, d + 1, k):
        in0.append(x)
    for x in range(1, d + 1, l):
        if x not in in0:
            in0.append(x)
    for x in range(1, d + 1, m):
        if x not in in0:
            in0.append(x)
    for x in range(1, d + 1, n):
        if x not in in0:
            in0.append(x)
    print(len(in0))
Решаю задачу в интерактивном режиме и при вводе больших чисел в переменную d выводит превышение лимита времени. Как можно упростить данную задачу?

Офлайн

#2 Авг. 12, 2016 12:43:02

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как можно упростить решение?

Попробуйте так:

 k = int(input())
l = int(input())
m = int(input())
n = int(input())
d = int(input())
in0 = set()
if k == 1 or l == 1 or m == 1 or n == 1:
    print(d)
elif k > d or l > d or m > d or n > d:
    print(0)
else:    
    for x in range(1, d + 1, k):
        in0.add(x)
    for x in range(1, d + 1, l):
        if x not in in0:
            in0.add(x)
    for x in range(1, d + 1, m):
        if x not in in0:
            in0.add(x)
    for x in range(1, d + 1, n):
        if x not in in0:
            in0.add(x)
    print(len(in0))

Офлайн

#3 Авг. 12, 2016 14:57:15

gratiani
Зарегистрирован: 2016-05-30
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Как можно упростить решение?

 k = int(input())
l = int(input())
m = int(input())
n = int(input())
d = int(input())
out0 = 0
for x in range(1, d+1):
    if x % k == 0 or x % l == 0 or x % m == 0 or x % n ==0:
        out0 += 1
print(out0)

Офлайн

#4 Авг. 12, 2016 16:58:15

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Как можно упростить решение?

теплее

Офлайн

#5 Авг. 14, 2016 11:32:33

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Как можно упростить решение?

рискну свои пять строк добавить

 k,l,m,n,d = [int(input()) for _ in range(5)]
out0 = 0
for x in range(1, d+1):
    out0 += 1 if 0  in (x % k, x % l, x % m, x % n ) else 0
print(out0)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version