同じ問題のセットを解決するために次のコードを見てください。問題に言及することが目的に役立つとは思わない、それはヨセフス問題のさらに別の反復です:
解決策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
このソリューションは、累積1.0912秒で指定された10個のテストケースを解決し、4360KiBのメモリを消費します。
解決策2:解決策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秒と640KiBのメモリで解決します。
Python n00bである私は疑問に思っていましたが、オンラインジャッジによると、両方で同じポイントを獲得していますが、ソリューション2が1よりも高速で、メモリ効率がはるかに高い理由は何ですか?時間差は非常に少なく聞こえるかもしれませんが、同時に、c / c ++ / perlの送信よりもさらに高速で、最速のソリューションで私を最初にランク付けします