2 3 5 8 ... 피보나치
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
bool vipsit[41];
long long dp[43];
void cal_part() {
dp[0] = 1; // 이거 해주는 이유는 vip가 두번 연속 나왔을 때 0
으로 초기화 되어 있으면 값이 0이 되므로 1을 해줘도 전체적인 값에 영향은 없다 .
dp[1] = 1;
dp[2] = 2;
for (int i = 3; i <= 43; ++i) {
dp[i] = dp[i-1] + dp[i-2];
}
}
void print_part() {
for (int i = 1; i <= 100; ++i) {
cout << dp[i] << ' ';
}
cout << endl;
}
int main(void) {
int n;
cin >> n;
int t;
cin >> t;
cal_part();
//print_part();
for (int i = 0; i < t; ++i) {
int k;
cin >> k;
vipsit[k] = true;
}
int ans = 1;
int cnt = 0;
for (int i = 1; i <= n; ++i) {
if (vipsit[i] == true) {
ans *= dp[cnt];
cnt = 0;
}
else {
cnt++;
}
}
if (cnt > 0) {
ans *= dp[cnt];
}
cout << ans << endl;
return 0;
}// 123 4 56 7 89
// 3 * 2 * 2
'알고리즘' 카테고리의 다른 글
[DP] 백준 1495 기타리스트 (0) | 2018.04.29 |
---|---|
[DP] 백준 2240 자두나무 (0) | 2018.04.29 |
[DP] 백준 1932 숫자삼각형 (0) | 2018.04.29 |
[DP] 백준 14501 퇴사 (0) | 2018.04.29 |
[DP] 백준 1520 내리막길 (0) | 2018.04.29 |