Submission

Status:
PPPPPPPPPP

Score: 100

User: kami

Problemset: อนุกรม

Language: cpp

Time: 0.001 second

Submitted On: 2024-10-16 23:54:47

#include <stdio.h>
#define MAX 100

// void add(int fib1[], int fib2[], int res[], int len1, int len2, int *reslen){
//     int carry = 0;
//     int maxlen = len1 > len2 ? len1 : len2;

//     for(int i = 0; i < maxlen; i++){
//         int d1 = i < len1 ? fib1[i] : 0;
//         int d2 = i < len2 ? fib2[i] : 0;

//         int sum = d1 + d2 + carry;
//         res[i] = sum%10;
//         carry = sum/10;
//     }

//     if(carry > 0){
//         res[maxlen++] = carry;
//     }
//     *reslen = maxlen;
// }

// void copy_array(int source[], int dest[], int len){
//     for(int i = 0; i < len; i++){
//         dest[i] = source[i];
//     }
// }

// void print(int f[], int len){
//     for(int i = len - 1; i >= 0; i--){
//         printf("%d",f[i]);
//     }
// }

// void fib(int n){
//     int fib1[MAX] = {};
//     int fib2[MAX] = {};
//     int res[MAX] = {};

//     fib1[0] = 1;
//     fib2[0] = 1;

//     int len1 = 1, len2 = 1, reslen = 1;

//     if(n <= 2){
//         printf("1");
//         return;
//     }

//     for(int i = 3; i <= n; i++){
//         add(fib1, fib2, res, len1, len2, &reslen);

//         copy_array(fib2, fib1, len2);
//         len1 = len2;
//         copy_array(res, fib2, reslen);
//         len2 = reslen;

//         if(i == n){
//             print(res, reslen);
//         }
//     }
// }

int main(){
    int n;
    unsigned long long prev = 1, fib = 1, next;
    scanf("%d",&n);
    if(n <= 2){
        printf("1");
        return 0;
    }
    for(int i = 2; i < n; i++){
        next = fib+prev;
        prev = fib;
        fib = next;
    }
    printf("%llu",next);
    return 0;
}