최근 경쟁에서 주어진 흥미로운 작업을 발견했지만 해결 방법은 작성자 솔루션이나 설명이 없습니다.Exponentiation과 연결된 작업에 대한 더 나은 알고리즘
작업은 다음과 같이 구성됩니다. 사용자에게 숫자 N이 주어지며 a^N
(xor 연산이 아닌 n의 제곱으로)을 계산해야합니다. 여기서 a 또는 b를 곱하여 계산할 수 있습니다. 이전 결과. a^n
을 계산하려면 계산해야 할 최소의 계산 수를 제공해야합니다.
예 :
N=27
Then the answer is 6:
a^2=a*a
a^3=a^2*a
a^6=a^3*a^3
a^9=a^3*a^6
a^18=a^9*a^9
a^27=a^18*a^9
N의 한계는 다음과 같다 : N<=40000
. 시간과 메모리 제한은 2s and 256MB
입니다.
이 작업을 해결하는 좋은 방법은 무엇입니까?
미리 감사드립니다.
꼬리 재귀? 당신은 내 생각을 여기에 귀하의 답변을 찾을 수 있습니다 : http://stackoverflow.com/a/26691276 – RicardoVallejo
가능한 중복 [최소 추가 체인 지수] (http://stackoverflow.com/questions/7330752/minimal-addition-chain- exponentiation) –
@PaulHankin : 동의하지만이 문제는 실제로 문제를 설명하는 데 더 효과적이라고 생각합니다. –