백준 - 곱셈(1629)

유재우·2022년 9월 19일
0

코딩테스트 준비_개인

목록 보기
161/192

문제

자연수 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))

참고한 블로그 링크

profile
끝없이 탐구하는 iOS 개발자 유재우입니다!

0개의 댓글