PS
BOJ 32981 : 찐 Even Number
lickelon
2025. 1. 27. 02:12
- 문제 링크 : boj.kr/32981
- 난이도 : S4
- 태그 : 분할정복을 이용한 거듭제곱
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
#define MOD 1000000007
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
ll d_pow(ll a, ll b) {
if(b == 0) return 1;
ll sub = d_pow(a, b/2);
ll res = ((sub % MOD) * (sub % MOD)) % MOD;
if(b % 2) res = (res * a) % MOD;
return res;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int q;
cin >> q;
while(q--) {
int n;
cin >> n;
ll ans = 4;
ans *= d_pow(5, n-1);
ans %= MOD;
if(n == 1) ans = 5;
cout << ans << "\n";
}
return 0;
}
풀이
$N \ne 1$일때 답은 $4 \times 5 ^{(N-1)}$이다.
거듭제곱의 지수가 너무 크므로 분할정복을 이용하여 구해준다.
728x90