問題の同じセットを解決するには、次のコードを見てください:問題を言えば、目的を助けてくれるとは思わない、Josephus problemの別の繰り返し:どのようにこれらのPythonコードは、まったく異なった動作をしますか
解決方法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:
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)
この溶液は1.0497秒とメモリの640KiBの合計で同じ10のテストケースを解決します。
オンライン裁判官によれば、私は両方の点で同じ点を獲得していますが、解決策2は1よりも速く、より多くのメモリを効率的にする理由は何ですか?私も速く、私は私ということを覚えて私の昔の経験でC/C++/perlの提出
あなたはこの自分をテストすることができます方法はありますか?最初の方法は私にとってずっと速いです。 – Blender
複雑な関数が独自のメソッドに分離されていると、JITingがより簡単になるかもしれません。ちょうど推測 – Patashu
サンプルファイルがありますか? – Ivo