#문제
https://www.acmicpc.net/problem/1629
#작성 코드
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 |