본문 바로가기
Problem Solving/BOJ

[Divide and Conquer] 1629 곱셈

by Bokoo14 2023. 1. 1.

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

 

1629번: 곱셈

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

www.acmicpc.net

# 2023.01.01
import sys
input = sys.stdin.readline

a, b, c = map(int, input().split())

def DAC(a, b, c):
    if b==1:
        return a%c
    if b%2==0:
        return (DAC(a, b//2, c)**2)%c
    elif b%2==1:
        return ((DAC(a, b//2, c)**2)*a)%c

print(DAC(a, b, c))

1. b==1일때 a

2. b는 짝수일때 DAC*DAC

3. b는 홀수일때 DAC*DAC*a

 

나눠서 계산 -> 이를 활용해서 계산하기

-> 연산횟수를 줄일 수 있음

'Problem Solving > BOJ' 카테고리의 다른 글

[Recursive] 1991 트리순회  (0) 2023.01.02
[DP] 1932 정수 삼각형  (0) 2023.01.02
[DP] 1149 RGB거리  (0) 2023.01.01
[DFS] 11725 트리의 부모 찾기  (0) 2023.01.01
[Greedy] 16953 A->B  (1) 2022.12.31