관리 메뉴

Mini

백준 2193 이친수 c++ // dp, overflow 해결방법 long long 본문

Algorithm/dp

백준 2193 이친수 c++ // dp, overflow 해결방법 long long

Mini_96 2023. 10. 10. 15:16

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

 

2193번: 이친수

0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않

www.acmicpc.net

1. 문풀과정

int -> overflow(-)

long long으로 바꿧더니 통과되었다.

 

2. 전체코드

#include <bits/stdc++.h>
using namespace std;

long long d[94][2], n;
//d[i][j] : i자리 이친수의 갯수, j:맨뒤가 j인 이친수의 갯수 

int main() {
	ios_base::sync_with_stdio(0);
	cin.tie(0);

	d[1][0] = 0;
	d[1][1] = 1;

	cin >> n;

	for (int i = 2; i <= n; ++i) {
		d[i][0] = d[i-1][0]+d[i-1][1];	//0을붙이는경우 : 다됨
		d[i][1] = d[i - 1][0];	//뒤에 1을붙이는경우 : 이전뒤가0일때만됨
	}

	cout << d[n][0]+d[n][1];
}