#45642: i promise that you'll never find another like b11


1121226@stu.wghs.tp.edu.tw (Arthur✨小蜜蜂)

學校 : 臺北市私立薇閣高級中學
編號 : 252772
來源 : [112.104.66.104]
最後登入時間 :
2025-03-30 12:41:08
c121. 00495 - Fibonacci Freeze -- UVa495 | From: [60.248.154.143] | 發表日期 : 2025-03-28 09:45

#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;
}
 
ZeroJudge Forum