powerlsj7   4년 전

키워드좀 알려주세용.

거듭제곱 알고리즘 치니까 안나와용.

okmy729   4년 전

이 영상 참고하시면 좋을 것 같습니다.

pow함수를 직접 구현하는 방법 입니다.

https://www.youtube.com/watch?v=otu3FCyoUVY

nahwasa   4년 전

B가 짝수일 때와 홀수일 때, 예를들어 아래와 같이 볼 수 있습니다. 

결국 이용하는 수학적 사고는 이미 알고계실 요거입니다. A(x*y) = (Ax)y

A^4 = (A^2)^2 (짝수일때)
A^5 = A * A^4 = A * (A^2)^2 (홀수일때)


B가 4일때를 보면 원래대로면 A * A * A * A 이렇게 * 연산이 3번 들어가야하지만,

A*A를 계산해서 A' 이라고 저장해두고 보자면 A' * A' 를 하면 되므로 총 * 연산이 2번 들어가죠!

그럼 이번엔 B가 8이라면 ((A^2)^2)^2 가 되겠죠.

A^2 = A' 이라면, (A^2)^2 = A' ^ 2 = A'' 이라면, 최종적으로 A'' ^2이 되고

원래는 A*A*A*A*A*A*A*A -> *연산 7번 이어야 되는게,

* 연산 3번으로 되죠.

즉, log2N 으로 연산 횟수가 줄어듭니다.

이걸 이용한 문제입니다.

powerlsj7   4년 전

봐도 잘 모르겠어용 ㅠㅠ 그 연산을 줄이는 내용은 이해가 가는데. 

문제를 어떤 식으로 접근해야하는지 

A^8을 (A^2)*2*2 이런식으로 3번 으로 끝낼수 있다는 것 같은데요.

재귀를 끝까지 돌면, 제곱이 0이 아닐 경우, 나눠서 제곱값이 1이 되면서 a%c 의 값이 리턴으로 상위 재귀함수에서=>>( a나누기 c의 나머지값을 제곱한 값)%c=>>반복?

이면 나머지를 제곱한 값을 c로 나눈 나머지가 계속 리턴되고 제곱되고 이런식으로 가는 것 같은데 

어렵네요 ㅠㅠ..

nahwasa   4년 전

저 같은 경우 메인 로직이 자바로 아래와 같습니다.

재귀를 사용한 방식으로, 언어적인 특색이 보일만한 코드는 아니니 보시면 아마 이해되실 듯 합니다.

참고해보셔요!

댓글을 작성하려면 로그인해야 합니다.