https://www.acmicpc.net/problem/2193
input - 1 2 3 4 5 6 7 8 9 10 ...
output - 1 1 2 3 5 8 13 21 34 55 ...
피보나치 수열인 걸 알고 코딩했는데 실패했다고 뜬다..!
실패한 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int yeechinsu(int N) {
if (N == 1) return 1;
if (N == 2) return 1;
int a = 1, b = 1, c;
for (int i = 2; i < N; i++) {
c = a + b;
a = b;
b = c;
}
return b;
}
int main() {
int N;
scanf("%d", &N);
printf("%d", yeechinsu(N));
}
출력하는 수가 int 자료형 크기에 맞지 않아서 실패했다.
long long 을 붙여서 해결했다.
성공한 코드 :
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
unsigned long long int yeechinsu(int N) {
if (N == 1) return 1;
if (N == 2) return 1;
unsigned long long int a = 1, b = 1, c=1;
for (int i = 2; i < N; i++) {
c = a + b;
a = b;
b = c;
}
return c;
}
int main() {
int N;
scanf("%d", &N);
printf("%llu", yeechinsu(N));
}