티스토리 뷰


[BOJ 1629(S1) 리뷰]

 

쉬워보이지만 정답률이 낮은것엔 이유가 있다.

최대값이 21억이므로 21억을 곱하는 연산을 한다면 당연히 오버플로우가 생긴다.

이 문제는 재귀를 통해 해결해야한다.

 

x^16은 x^8 * x^2과 같음을 이용해야 한다.


 

#include <iostream>
#include <queue>
using namespace std;

long long int f(int A, int B, int C)
{
	if (B == 1) return A % C;
	long long int val = f(A, B / 2, C);
	val = val * val%C;
	if (B % 2 == 0) return val;
	return val * A%C;
}

int main(void)
{
	cin.tie(0);
	ios::sync_with_stdio(0);
	int A, B, C;
	cin >> A >> B >> C;
	cout << f(A, B, C);
}



 

'알고리즘 풀이 > 재귀' 카테고리의 다른 글

프로그래머스 : 124 나라의 숫자  (0) 2021.01.26
BOJ : 1992 쿼드트리  (0) 2020.08.06
BOJ 1780 : 종이의 개수  (0) 2020.08.06
BOJ : 2447 별 찍기-10  (0) 2020.08.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함