洛谷 遞迴與數論 菲波納列數列

2021-10-10 08:19:46 字數 703 閱讀 7245

1.題目

利用斐波拉列數列的第999項mod833545964的結果是多少?

2.知識點:

①菲波納列數列及實現菲波納列數列得多種方法

②取模運算的性質

<1>分配律

<2>多次取模運算的結果不變

具體請看:

3.解題思路

由於這個數列的第999項非常大,精度非常,已經超出了計數範圍,所以要採用邊取模便運算的方法:由於斐波拉列數列的每一項等於前兩項之和,及f[i]=f[i-1]+f[i-2],且由於多次取模的運算結果不變和分配律這兩個性質,因此f[i]%k=(f[i]%k)%k=(f[i-1]%k+f[i-2]%k)%k,因此如果要求某一項取模k的值,可以求出前兩項取模k後的值,然後相加再取模,所以,對於斐波拉列數列的每一項可以先求出它取模k後的結果,然後要求某一項%k的時候就直接讓這兩個取模後的結果相加然後%k

4.易錯點

不要用遞迴的方式,因為太多項了,遞迴反而效率低,直接運算,就是用動態規劃去算

5.**實現

#include

using

namespace std;

intmain()

cout<

}

用遞迴求階乘與斐波納契數列

階乘 factorial 斐波納契數列 fibonacci 階乘計算條件 當 n 0 時 n 1 當 n 0 時 n n n 1 例項 5 5 4 3 2 1 c 語言描述 static int factorail int n 斐波納契數計算條件 當 n 1 時結果為1 當 n 1 時結果為 f n...

洛谷P2789 直線交點數 數論,遞迴

題目傳送門 平面上有n條直線,且無三線共點,那麼這些直線能有多少不同的交點數?乙個正整數n 乙個整數表示方案總數 輸入 1 4輸出 1 5n 25 分析 給定你 n 條直線,如果其中有 i 條平行,其他的不平行,那麼交點數就是 i n i n i 條直線的交點數 那麼我們就可以遞迴求出 n 條直線所...

洛谷過程函式與遞迴總結

這題一開始是想用遞迴的方法解決,就是定義乙個全域性變數來計數,然後通過題中該自然數不能超過原數一半的條件來結束呼叫,但是該方法時間複雜度過大,會超時,如下 includeint s 1 void sum int n int main 本題可以從另乙個角度切入,由於本題是對輸入的數用相同的方法進行處理...