[백준 BOJ_1629] 곱셈 Python 풀이

출처: 백준 온라인 저지

문제

BOJ_1629

풀이

분할정복을 이용해 거듭제곱을 더 빨리 계산할 수 있습니다.

주어진 지수를 반으로 나눈 지수만큼의 거듭제곱을 한 값을 두번 곱해주는 방식입니다. 지수가 홀수 일 경우에는 반으로 나눈 값을 두번 곱해준 뒤 n을 한번 더 곱해줍니다.

각 곱한 값을 C로 나눈 나머지로 반환해줍니다.

지수가 0(기저사례)일때는 모든 수의 0제곱의 값 1을 반환해줍니다.

코드

def power(n, exp):
    if exp == 0:
        return 1
    half = power(n, exp // 2)
    if exp % 2:
        return (half*half*n)%C
    return (half*half)%C
A, B, C = map(int, input().split())
print(power(A, B))

Leave a comment