#문제

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

 

1629번: 곱셈

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

www.acmicpc.net

 

#작성 코드

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
28
29
30
31
#include <iostream>
using namespace std;
 
int power(int a, int b, int c){
    // b가 1이 되면 a%c를 리턴한다. 
    if( b==1 ){
        return a%c;
    }
    
    // b가 1이 아닌 짝수이면 a의 b/2제곱을 c로 나눈 나머지 리턴 
    if( b%2==0 ){
        long long int tmp=power(a, b/2, c)%c; 
        tmp *= tmp;
        tmp%=c;
        return tmp;
    }
    // b가 1이 아닌 홀수이면 a* a의 b-1제곱을 c로 나눈 나머지 리턴 
    else{
        long long tmp = power(a, b-1, c)%c;
        tmp *= a;
        tmp%=c;
        return tmp;
    }
}
 
int main(){
    int a, b, c;
    cin>>a>>b>>c;
    cout<<power(a, b, c);
    return 0;
}
cs

##

power함수의 리턴형을 int로 유지하기 위해 중간 계산과정에 long long int tmp를 추가했다.

'BOJ' 카테고리의 다른 글

BOJ 1676번 :: 팩토리얼 0의 개수  (0) 2019.12.25
BOJ 1956번 :: 운동  (0) 2019.12.25
BOJ 1780번 :: 종이의 개수  (0) 2019.12.24
BOJ 1992번 :: 쿼드트리  (0) 2019.12.24
BOJ 9375번 :: 패션왕 신해빈  (0) 2019.12.23

+ Recent posts