Submission
Status:
PPPPPPPPPP
Score: 100
User: Cmoss9
Problemset: อนุกรม
Language: c
Time: 0.002 second
Submitted On: 2024-10-08 20:12:01
#include <stdio.h>
#define MAX 1000 // Adjust this as needed to store larger Fibonacci numbers
void add(int a[], int b[], int result[]) {
int carry = 0;
for (int i = 0; i < MAX; i++) {
int sum = a[i] + b[i] + carry;
result[i] = sum % 10;
carry = sum / 10;
}
}
void copy(int src[], int dest[]) {
for (int i = 0; i < MAX; i++) {
dest[i] = src[i];
}
}
void print_fib(int arr[]) {
int start = MAX - 1;
while (start > 0 && arr[start] == 0) {
start--; // Find the first non-zero digit
}
for (int i = start; i >= 0; i--) {
printf("%d", arr[i]);
}
printf("\n");
}
int main() {
int n;
scanf("%d", &n);
int fib1[MAX] = {0}, fib2[MAX] = {0}, result[MAX] = {0};
fib1[0] = 1;
fib2[0] = 1;
if (n == 1 || n == 2) {
printf("1\n");
return 0;
}
for (int i = 3; i <= n; i++) {
add(fib1, fib2, result);
copy(fib2, fib1);
copy(result, fib2);
}
print_fib(result);
return 0;
}