Как преодолеть ошибку TLE для вопроса ниже? - PullRequest
0 голосов
/ 10 мая 2019

Я решаю этот код для соревнования по программированию, но после некоторых тестов он выдает ошибку. Какие изменения мне нужно сделать, чтобы преодолеть эту проблему.

Проблема -

Ари и Рич играют в довольно запутанную игру. Вот правила игры:

В игре участвуют две груды матчей. Первоначально первая куча содержит N совпадений, а вторая содержит M совпадений. Игроки чередуются ходами; Ари играет первым.

На каждом ходу текущий игрок должен выбрать одну стопку и удалить из нее положительное количество совпадений (не превышающее текущего количества совпадений в этой стопке).

Допускается удаление X совпадений из кучи, только если количество совпадений в другой куче делит X

Игрок, который берет последний матч из любой стопки, выигрывает.

Можно доказать, что до тех пор, пока обе стопки не пустые, всегда есть хотя бы один действительный ход, поэтому игра должна закончиться опустошением какой-либо стопки. И Ари, и Рич играют оптимально. Определите победителя игры.

Input

Первая строка ввода содержит одно целое число T, обозначающее количество тестовых случаев. Описание Т-тестов приведено ниже. Первая и единственная строка каждого теста содержит два целых числа через пробел: N и M

выход

Для каждого теста выведите одну строку, содержащую строку «Ari» (без кавычек), если победит Ари, или «Rich» (без кавычек), если победит Rich.

test = int(input())
for i in range(test):
    a = list(map(lambda x:int(x),input().split()))
    a.sort()
    player = 1
    t = a[0]
    b = a[0]
    n = a[1]
    while(t!=0):
        while(n%t!=0):
            t=t-1
        b=b-t
        t=b
        player+=1
    if(player %2==0):
        print("Ari")
    else:
        print("Rich")

Отредактированный код должен преодолевать ошибку

...