문제
자연수 A를 B번 곱한 수를 알고 싶다. 단 구하려는 수가 매우 커질 수 있으므로 이를 C로 나눈 나머지를 구하는 프로그램을 작성하시오.
- 입력
첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 모두 2,147,483,647 이하의 자연수이다.
- 출력
첫째 줄에 A를 B번 곱한 수를 C로 나눈 나머지를 출력한다.
- 예제 입력 1
10 11 12
- 예제 출력 1
4
- 첫번째 시도
import sys input = sys.stdin.readline a, b, c = map(int, input().split()) print((a**b)%c)
- 정답
import sys a,b,c = map(int,sys.stdin.readline().split()) def multi (a,n): if n == 1: return a%c else: tmp = multi(a,n//2) if n %2 ==0: return (tmp * tmp) % c else: return (tmp * tmp *a) %c print(multi(a,b))