개인적인 난이도
쉬움
알면 1분만에 풀고 모르면 그냥 틀린다
매우 중요한 개념이 2 가지 들어있다. 정수론(모듈러 산술) & 분할정복(log N)
몰라서 2번 틀렸다
처음엔 정수론 몰라서 오버플로우로 틀리고 두번째엔 분할정복 몰라서 시간초과로 틀림

성공한 풀이)
핵심 1) 모듈러연산은 신기하게 덧셈 뺄셈 곱셈 분배법칙이 가능하다.
핵심 2) 거듭제곱 계산(pow) 는 분할정복을 이용해 계산하면 log N 안에 끝남
성공한 코드
#include <bits/stdc++.h>
#define fastio cin.tie(0)->sync_with_stdio(0)
#define ll long long
using namespace std;
int main(void) {
fastio;
ll A,B,C;cin>>A>>B>>C;
A%=C;
ll ans = 1;
while (B)
{
if(B%2==1){
ans*=A;
ans%=C;
}
B=B>>1;
A*=A;A%=C;
}
cout<<ans%C;
return 0;
}'C++ > 문제풀이 기록' 카테고리의 다른 글
| [BOJ 27296, 약간 어려움] 카탈란 마스터의 선분 그리기 게임 (C++) (2) | 2023.02.02 |
|---|---|
| [BOJ 1799, 약간 어려움] 비숍 (C++) (1) | 2023.01.26 |
| [BOJ 27231, 약간 어려움] 2023년이 기대되는 이유 (C++) (0) | 2023.01.16 |
| [BOJ 7662, 어려움] 이중 우선순위 큐 (C++) (0) | 2023.01.11 |
| [BOJ 5893, 약간 쉬움] 17배 (C++) (2) | 2023.01.05 |