#2193은 수학적 원리를 알고 있으면 쉽게 풀 수 있습니다.
문제의 링크는 다음과 같습니다.
https://www.acmicpc.net/problem/2193
2193번: 이친수
0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않
www.acmicpc.net
이친수는 0으로 시작하지 않고, 1이 연속으로 나타나지 않는 수입니다. 이것과 관련해서 제가 쓴 글이 있습니다.
동전을 n번 던졌을 때, 연속으로 앞면이 나타날 경우의 수는?
이런 경우의 수를 계산하는 것이 쉽지는 않습니다. 어떻게 생각을 해야 하는지가 중요하죠. 동전을 n번 던졌을 때의 경우의 총 수는
sdev.tistory.com
동전을 N번 던졌을 때, 연속으로 앞면이 나타나는 경우의 수를 계산하는 방법입니다. 달리 말하면, 총 경우의 수
그 경우의 수가 피보나치수와 같다는 것을 설명한 것입니다.

이번 문제는 바로 그 원리를 이용해서 풀 수 있습니다.
제가 작성한 소스입니다.
//------------------------------------------------
// baekjoon #2193
// - by Aubrey Choi
// - created at 2019-06-02
//------------------------------------------------
#include <stdio.h>
#include <memory.h>
int main()
{
int n;
long long fc0 = 0, fc1 = 1, fp1 = 0;
scanf("%d", &n);
for(int i = 1; i < n; i++)
{
fp1 = fc1;
fc1 = fc0;
fc0 += fp1;
}
printf("%lld\n", fc0 + fc1);
return 0;
}
반응형
'Programming > BOJ' 카테고리의 다른 글
[C/C++] 백준 #2207 가위바위보(2-SAT) (0) | 2023.04.16 |
---|---|
[C/C++] 백준 #2206 벽 부수고 이동하기(너비 우선 탐색) (0) | 2023.04.16 |
[C/C++] 백준 #2188 축사 배정(이분 매핑) (0) | 2023.04.13 |
[C/C++] 백준 #2178 미로 탐색(너비 우선 탐색) (0) | 2023.04.13 |
[C/C++] 백준 #2169 로봇 조종하기(동적 계획법) (0) | 2023.04.12 |
댓글