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;
}