코딩테스트 대비/BOJ

[Baekjoon/Python] 1629번: 곱셈 - 효과는 굉장했다!

bluetag_boy 2022. 4. 3. 18:14
반응형
 

1629번: 곱셈

첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.

www.acmicpc.net

 

알고리즘 분류

  • 수학
  • 분할 정복을 이용한 거듭제곱

 

 

SOLUTION

pow() 함수를 이용한 간단한 코드

print(pow(*map(int,input().split())))

 

 

분할 정복 이용한 코드

import sys

def divide_and_conquer(num, n):
    if n == 1:
        return num % C
    
    if n % 2 == 0:
        y = divide_and_conquer(num, n//2)
        return y * y % C
    
    else:
        y = divide_and_conquer(num, (n-1)//2)
        return y * y * num % C


A, B, C = map(int, sys.stdin.readline().split())
print(divide_and_conquer(A,B))