반응형
1. 문제
2. 풀이
A의 B승은 A의 B/2승의 제곱과 같다.
위와 같이 지수가 짝수일 경우 단지 지수를 반으로 쪼개기만 하면 되었지만
아래의 수식과 같이 지수가 홀수일 경우 반으로 쪼개는 것과 동시에 밑을 하나 더 곱해주면 된다.
3. 소스코드
#include <stdio.h>
typedef long long ll;
int a, b, c;
ll power(long long n, long long m) {
if (m == 0) return 1;
ll res = power(n, m / 2) * power(n, m / 2) % c;
if (m % 2) return res * n % c;
return res;
}
int main() {
scanf("%d %d %d", &a, &b, &c);
printf("%lld", power(a, b));
}
4. 참고
질문, 고칠점 등 댓글 언제나 환영입니다.
반응형
'백준 > 일반 문제' 카테고리의 다른 글
[백준/BOJ] 20056 - 마법사 상어와 파이어볼 (c++) (0) | 2022.04.06 |
---|---|
[백준/BOJ] 19238 - 스타트 택시 (c++) (BFS) (0) | 2022.04.03 |
[백준/BOJ] 19237 - 어른 상어 (c++) (0) | 2022.04.02 |
[백준/BOJ] 18411 - 試験 (c++) (0) | 2021.03.29 |
[백준/BOJ] 2740 - 행렬 곱셈 (c++) (0) | 2021.03.29 |