티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/8394
8394번: 악수
첫째 줄에 회의에 참석한 사람의 수 n (1 ≤ n ≤ 10,000,000)이 주어진다.
www.acmicpc.net
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MAX = 987654321;
int N;
int dp[10000001];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> N;
dp[0]=1;
dp[1]=2;
for(int i=2; i<N; i++)
{
dp[i] = (dp[i-1] + dp[i-2]) % 10; //피보차니 수열 (마지막 한자리만)
}
cout << dp[N-1];
return 0;
}
직접 경우의 수를 적어보면 피보나치 수열의 점화식을 따른다는 것을 알 수 있다.
여기서 추가적으로 해주어야 할 것은 마지막 자리만 출력한다는 것이다.
따라서 점화식에 %10을 하여 10으로 나눈 나머지만 저장하도록 해준다.
'백준 > 실버' 카테고리의 다른 글
[백준 15489번] 파스칼 삼각형 (C++) (0) | 2023.12.04 |
---|---|
[백준 17175번] 피보나치는 지겨웡~ (C++) (0) | 2023.12.03 |
[백준 18353번] 병사 배치하기 (C++) (0) | 2023.11.22 |
[백준 9658번] 돌 게임 4 (C++) (0) | 2023.11.20 |
[백준 1446번] 지름길 (C++) (0) | 2023.11.19 |