請輸出\(fib(n) mod 10000\)
\(n \leq 1000000000\)
由於\(n\)的範圍在\(1e9\)直接遞推鐵tle,考慮矩陣快速冪
fibonacci數列有如下性質
通過多次迭代
算是個板子題吧,記得在wust新生賽做過一道想矩陣快速冪的題,然而正解是找規律qaq,在此貼個板子。
#include #include #include #include #include #include #include typedef long long ll;
const int mod = 1e4;
using namespace std;
struct matrix }
} base, ans;
matrix times(matrix a, matrix b)
} return ans;
}void matrixpow(ll x)
x >>= 1;
base = times(base, base); }}
ll n;
int main()
matrixpow(n);
cout << ans.m[0][1] % mod << endl;
} return 0;
}
Fibonacci(矩陣快速冪)
菲波那契數列是指這樣的數列 數列的第乙個是0和第二個數是1,接下來每個數都等於前面2個數之和。給出乙個正整數a,要求菲波那契數列中第a個數的後四位是多少。input 多組資料 1結束 範圍1 10 9 output 第x項的後4位 sample input09 999999999 100000000...
fibonacci數列矩陣快速冪
對於矩陣 1 1 1 0 的n次冪,第一行第二個元素 右上角 的元素即為fibonacci數列的第n項,由此可以根據矩陣的乘法計算fibonacci數列的元素值 矩陣的快速冪利用的也是冪乘的二分法,只不是換成了矩陣的乘法,可以用函式處理。可以定義乙個二維陣列的結構體 typedef struct m...
Fibonacci數列(矩陣乘法快速冪)
題目描述 定義 f0 f1 1,fn fn 1 fn 2 n 2 稱為fibonacci數列。輸入n,求fn mod q。其中1 q 30000。輸入描述 第一行乙個數t 1 t 10000 以下t行,每行兩個數,n,q n 109,1 q 30000 輸出描述 檔案包含t行,每行對應乙個答案。樣例...