https://www.acmicpc.net/problem/1629
Problem
- 자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오.
조건
- 첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
SOL
python의 pow 모델도 LogN으로 구현되어 있기 때문에, 내장 함수를 써도되지만, 직접 구현해보았다.
분할정복방법으로 구현하면 된다!
A,B,C=map(int,input().split())
def Doc(a,b):
if b==0:
return 1
#홀수
if b%2:
return (Doc(a,b//2)**2*a)%C
else:
return (Doc(a,b//2)**2)%C
print(Doc(A,B))
'알고리즘 문제(SOL)' 카테고리의 다른 글
[백준/10830/파이썬] 행렬 제곱 (0) | 2022.02.23 |
---|---|
[백준/9376/파이썬] 탈옥 (0) | 2022.02.22 |
[백준/11401/파이썬] 이항계수 3 (0) | 2022.02.22 |
[백준/24509/파이썬] 상품의 주인은? (0) | 2022.02.21 |
[백준/2234/파이썬] 성곽 (0) | 2022.02.21 |