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