728x90
문제
n과 m이 주어질 때, n의 m승을 구하는 프로그램을 작성하시오. 단, n의 m승의 값이 커질 수 있기 때문에, 정답을 10,007 으로 나눈 나머지를 출력한다.
입력
첫 번째 줄에 숫자 n과 m이 주어진다. ( 1 ≤ n ≤ 100, 1 ≤ m ≤ 1,000,000,000,000,000,000 )
출력
첫째 줄에 n의 m승을 10,007 으로 나눈 나머지를 출력한다.
예제 입력
3 4
예제 출력
81
#코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import sys
'''
(1) 함수의 정의 : 함수의 의미를 "말로" 정의한다.
(2) 점화식 : 나보다 작은 함수는 값을 잘 구한다고 가정하고,
이들을 이용해서 나를 구하기 위한 식을 접는다.
(3) 기저조건
'''
def getResult(n, m):
# n^m을 10007로 나눈 나머지를 반환하는 함수
# m == 0 기저 조건
if m == 0:
return 1
else:
if m%2 == 0:
# n^m = (n^(m//2))^2
temp = getResult(n, m//2)
return (temp*temp)%10007
else:
# n^m = (n^(m-1))*n
temp = getResult(n, m-1)
return (temp*n)%10007
if __name__ == "__main__":
n, m = map(int, sys.stdin.readline().split())
print(getResult(n,m))
|
cs |
반응형
'CS > 알고리즘_문제풀이(파이썬)' 카테고리의 다른 글
숫자 만들기 (0) | 2021.05.31 |
---|---|
goodseq (0) | 2021.05.28 |
공통 조상 찾기 (0) | 2021.05.27 |
트리 순회 결과 출력하기 (0) | 2021.05.27 |
원형큐 구현하기 (0) | 2021.05.26 |