Submission

Status:

PPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: chokun

Problemset: อนุกรม

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-06 09:55:52

#include <bits/stdc++.h>
using namespace std;

// ฟังก์ชันบวกเลขมหาศาลโดยใช้ std::string แบบ C++
string addBigNumbers(string num1, string num2) {
    string result = "";
    int i = num1.length() - 1;
    int j = num2.length() - 1;
    int carry = 0;

    // วนลูปบวกจากหลักหน่วยถอยหลังกลับไป
    while (i >= 0 || j >= 0 || carry) {
        int sum = carry;
        if (i >= 0) sum += num1[i--] - '0';
        if (j >= 0) sum += num2[j--] - '0';
        
        carry = sum / 10;
        result += to_string(sum % 10);
    }

    // กลับด้านสตริงให้ถูกต้องด้วยฟังก์ชันของ C++
    reverse(result.begin(), result.end());
    return result;
}

int main() {
    int n;
    if (!(cin >> n)) return 0;

    if (n == 1 || n == 2) {
        cout << 1 << endl;
        return 0;
    }

    // ใช้ std::vector ในการเก็บลำดับฟีโบนัชชี เพื่อความสะดวกในการเรียกใช้
    vector<string> fib(n + 1);
    fib[1] = "1";
    fib[2] = "1";

    for (int i = 3; i <= n; i++) {
        fib[i] = addBigNumbers(fib[i - 1], fib[i - 2]);
    }

    // แสดงผลลัพธ์
    cout << fib[n] << endl;

    return 0;
}