Как я могу избежать превышения лимита времени в «время»? (python) - PullRequest
0 голосов
/ 24 марта 2020

Я должен выяснить, как итерации мне нужны, чтобы прийти к l oop

пример:

0001 -> 0000 -> 0000 - пришел к l oop после 2 итераций;
4100 -> 8100 -> 6100 -> 2100 -> 4100 - пришел к l oop после 4 итераций

Мой код:

n = int(input())

a = list(input().split())

for i in a:
        i = int(i)
        k = 1
        d = i
        i = i**2 // 100 % 10000
        while d != i:
            i = i**2 // 100 % 10000
            k = k + 1      
        print(k, end = ' ')

Превышен лимит времени , Как я могу это исправить?

1 Ответ

0 голосов
/ 04 апреля 2020

Я почти уверен, что вы не сказали компьютеру правильно оглянуться на "d == 1". Чтобы правильно сделать это, вам нужно добавить оператор continue в конце while l oop. Итак, ваш код будет выглядеть примерно так:

n = int(input())

a = list(input().split())

for i in a:
    i = int(i)
    k = 1
    d = i
    i = i**2 // 100 % 10000
    while d != i:
        i = i**2 // 100 % 10000
        k = k + 1  
        continue    
    print(k, end = ' ')
...