동일한 문제 세트를 해결하기 위해 다음 코드를 살펴보십시오. 문제를 언급하는 것이 어쨌든 도움이 될 것이라고 생각하지 않습니다. Josephus problem의 또 다른 반복입니다.이 파이썬 코드는 어떻게 다르게 수행합니까?
용액 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 초 전체에서 동일한 10 테스트 케이스를 해결하고 메모리 640KiB.
파이썬 n00b이기 때문에 온라인 심사 위원에 따르면 두 가지 모두 똑같은 점수를 얻었지만 해결책 2는 1보다 훨씬 빠르고 메모리 효율성은 더 높아 졌는지 궁금합니다. 나는 시간 차이가 매우 적은 소리를 수 있다는 것을 알고 있지만, 동시에 내가 기억 내 오랜 경험에서
이 직접 테스트 할 수있는 방법이 있나요 : 여기
는 성능 비교를 위해 사용할 수있는 코드인가? 첫 번째 방법은 나를 위해 훨씬 더 빠릅니다. – Blender복잡한 함수가 자체 메서드로 분리되어 있으면 JITing과 관련이있을 수 있습니다. 그냥 추측 – Patashu
예제 파일이 있습니까? – Ivo