Пожалуйста, посмотрите следующий код, чтобы решить тот же набор проблем, я не думаю, что упоминание проблемы каким-либо образом помогло бы цели, это еще одна итерация Проблема Джозефуса:
Решение 1:
import sys
from math import log
cases= int(sys.stdin.readline())
current= 0
while current < cases:
current += 1
n = int(sys.stdin.readline())
print 2*(n - 2**(int(log(n,2))))+1
Это решение решает данные 10 тестовых случаев в сумме 1.0912 секунд и потребляет 4360 Кбайт памяти.
Решение 2:
def josephus_2( n ):
from math import log
return 2*(n - 2**(int(log(n,2))))+1
import sys
cases= int(sys.stdin.readline())
current= 0
while current < cases:
current += 1
n = int(sys.stdin.readline())
print josephus_2( n )
это решение разрешает те же 10 тестовых случаев в общей сложности 1.0497 секунд и 640 Кбайт памяти.
Будучи Python n00b, мне было интересно, в то время как, по словам онлайн-судьи, я зарабатываю одинаковые очки для обоих, но что делает решение 2 быстрее, чем 1 и намного больше памяти? Я знаю, что разница во времени может звучать очень мало, но в то же время меня сначала оценивает самое быстрое решение, даже быстрее, чем представления c/С++/perl