728x90
18291번: 비요뜨의 징검다리 건너기 (acmicpc.net)
접근 방법
도저히 감이 안잡혀서 점근식으로 접근해보았다.
N=3 인 경우
2
1 1
N=4 인 경우
3
2 1
1 2
1 1 1
N=5 인 경우
4
3 1
1 3
2 1 1
1 2 1
1 1 2
2 2
1 1 1 1
2 -> 4 -> 8 -> ...
2의 제곱 형태로 나아간다고 생각하여
2의 N-2 승을 이용하니 맞았다.
더 자세한 설명은 아래 참고 블로그를 확인해보자.
코드
#include <iostream>
#include <vector>
#include <algorithm>
#define ll long long
using namespace std;
ll t, n;
ll mod = 1000000007;
void powFunc(ll a, ll b) {
ll res = 1;
while(b) {
if (b % 2 != 0) {
res *= a;
res %= mod;
}
a *= a;
a %= mod;
b /= 2;
}
cout << res << "\n";
}
int main() {
cin >> t;
while (t--) {
cin >> n;
if (n == 1) {
cout << "1\n";
}
else {
powFunc(2, n - 2);
}
}
}
참고
백준 18291번: 비요뜨의 징검다리 건너기 (tistory.com)
백준 18291번: 비요뜨의 징검다리 건너기
www.acmicpc.net/problem/18291 18291번: 비요뜨의 징검다리 건너기 강을 건너는 방법은, (1 → 4), (1 → 2 → 4), (1 → 3 → 4), (1 → 2 → 3 → 4)의 4가지이다. www.acmicpc.net 이런 문제는 규칙이 한 번에 보이지 않
memoacmicpc.tistory.com
728x90
'📊알고리즘 > BOJ' 카테고리의 다른 글
BOJ 11404 - 플로이드 (0) | 2024.07.01 |
---|---|
BOJ 3190 - 뱀 (0) | 2024.06.20 |
BOJ 3109 - 빵집 (0) | 2024.04.30 |
BOJ 2531 - 회전 초밥 (0) | 2024.04.29 |
BOJ 2473 - 세 용액 (0) | 2024.04.23 |