티스토리 뷰

백준

백준 소스코드 [C++] 14852 타일 채우기 3

Hani_Levenshtein 2020. 8. 19. 00:00

https://www.acmicpc.net/problem/14852

 

14852번: 타일 채우기 3

첫째 줄에 경우의 수를 1,000,000,007로 나눈 나머지를 출력한다.

www.acmicpc.net

백준 소스코드 [C++] 14852 타일 채우기 3

#include <iostream>
#include <cmath>
using namespace std;
long long int arr[1000001][2];
long long int tiling(int n) {
	arr[0][0] = 0;
	arr[1][0] = 2;
	arr[2][0] = 7;
	arr[2][1] = 1;
	for (int i = 3;i <= n;i++) {
		arr[i][1] = (arr[i - 1][1] + arr[i - 3][0]) % 1000000007;
		arr[i][0] = (3 * arr[i - 2][0] + 2 * arr[i - 1][0]  + 2 * arr[i][1]) % 1000000007;
	}
	return arr[n][0];
}
int main() {
	int n;
	cin >> n;
	cout << tiling(n);
	return 0;
}
댓글