[BOJ] 1629번 곱셈

천호영·2022년 6월 25일
0

알고리즘

목록 보기
23/100
post-thumbnail

https://www.acmicpc.net/problem/1629

이항 계수 3을 풀다가 관련되어서 풀게 된 문제이다.
한 수의 n승을 분할정복을 통해 빠르게 얻을 수 있고, 여기에 모듈로 연산 분배법칙을 함께 이용하면 풀이되는 문제이다.

모듈로 연산 분배법칙은 +,-,x에서 가능하고 /는 특수한 상황에서 가능하다.

def pow_plus_modulo(num, n, m):  # (num^n) % m 구하기
    if n == 1:
        return num % m

    if n % 2 == 0:  # n이 짝수
        return (pow_plus_modulo(num, n // 2, m)**2) % m
    else:
        return ((pow_plus_modulo(num, (n - 1) // 2, m)**2) * (num % m)) % m


A, B, C = map(int, input().split())
print(pow_plus_modulo(A, B, C))
profile
성장!

0개의 댓글