#include <bits/stdc++.h> using namespace std; string addStrings(string num1, string num2) { // 大數相加函式 string result; // 儲存結果的字串 int carry=0; // 進位值 int i=num1.length()-1; // num1最後一位的索引 int j=num2.length()-1; // num2最後一位的索引 while (i>=0||j>=0||carry){ // 當還有數字要處理或有進位時 int sum=carry; // sum先加上進位值 if (i>=0){ // 如果num1還有數字 sum+=(num1[i--]-'0'); // 將字符轉為數字並加到sum } if (j>=0){ // 如果num2還有數字 sum+=(num2[j--]-'0'); // 將字符轉為數字並加到sum } carry=sum/10; // 計算進位值 result.insert(0,1,(sum % 10)+'0'); // 將結果插入字串開頭 } return result; // 返回相加後的結果 } string fibonacci(int n) { // 計算第n個費氏數列 if (n<=1){ // 處理基本情況 return to_string(n); // 轉換為字串並返回 } string a="0"; // 初始化F(0) string b="1"; // 初始化F(1) string c=""; // 用於存儲F(n) for (int i=2;i<=n;i++){ // 計算F(2)到F(n) c=addStrings(a,b); // F(n)=F(n-1)+F(n-2) a=b; // 更新F(n-2) b=c; // 更新F(n-1) } return b; // 返回第n個斐波那契數 } int main() { int n; while (cin>>n){ cout<<"The Fibonacci number for "<<n<<" is "<<fibonacci(n)<<endl; } return 0; }