数字迷阵(矩阵快速幂+结论题)
生活随笔
收集整理的這篇文章主要介紹了
数字迷阵(矩阵快速幂+结论题)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
數字迷陣(矩陣快速冪+結論題)
題目描述
小可可參觀科學博物館時,看到一件藏品,上面有密密麻麻的數字,如下所示: ??1 ? 2 ? 3 ? 5 ? ?8 ? ?13 ? 21 ? 34 ? 55 ? ?89 ? ?144 … ??
4 ? 7 ? 11 ?18 ? 29 ? 47 ? 76 ? 123 ?199 ? 322 ? 521 … ??
6 ? 10 ?16 ?26 ? 42 ? 63 ? 110 ?178 ?288 ? 466 ? 754 … ??
9 ? 15 ?24 ?39 ? 63 ? 102 ?165 ?267 ?432 ? 699 ? 1131 … ??
12 ?20 ?32 ?52 ? 84 ? 136 ?220 ?356 ?576 ? 932 ? 1508 … ??
14 ?23 ?37 ?60 ? 97 ? 157 ?254 ?411 ?665 ? 1076 ?1741 … ??
17 ?28 ?45 ?73 ? 118 ?191 ?309 ?500 ?809 ? 1309 ?2118 … ??
19 ?31 ?50 ?81 ? 131 ?212 ?343 ?555 ?898 ? 1453 ?2351 … ??
22 ?36 ?58 ?94 ? 152 ?246 ?398 ?644 ?1042 ?1686 ?2728 … ??
25 ?41 ?66 ?107 ?173 ?280 ?453 ?733 ?1186 ?1919 ?3105 … ??
27 ?44 ?71 ?115 ?186 ?301 ?487 ?788 ?1275 ?2063 ?3338 … ??
… ??
仔細一分析,發現還挺有規律。 ??
原來,第一行是Fibonacci數列。即,該行中除了第一個和第二個數分別為1和2之外,其他數都是其左側相鄰的兩個數之和。 ??
其后各行也類似于Fibonacci數列。只是第i行的第一個數是前 行中未出現的最小正整數,而其第二個數與該行第一個數以及所在行的編號相關,即A[i,2]=A[i,1]*2-(i-1) 。如在第一行中未出現的最小正整數為4,前三行中未出現的最小正整數為9。故第二行以4和7開頭,而第四行以9和15開頭。 ??
小可可高興地把這個發現告訴了爺爺。爺爺問道:你能否一口報出第i行、第j列的那個數對m取模的結果是多少呢? ??
聰明的小可可通過心算就能知道答案。你是否能編寫程序求解呢?
?
輸入
每行有三個分別用一個空格隔開的正整數,分別是i、j和m。其中,i, j<=1000000000 ,2<=m<=10000 。 ???
輸出
每行輸出對應的第i行、第j列的那個正整數對m取模的結果。?
樣例輸入
復制樣例數據
1 2 99樣例輸出
2ps:第一列之差3 2 3 3 2 3 2 3 3 2 ,然后就有人推出結論,每一行第一個數為,i-1+i*((1+sqrt(5))/2;? ? ? ? ? ? ? ? ?神奇!
#include <bits/stdc++.h>using namespace std; typedef long long ll;struct mat{ll m[2][2]; }unit; ll m,a,b; mat operator*(mat a,mat b){mat ret;memset (ret.m,0, sizeof (ret.m));for(int i=0;i<2;i++) {for(int j=0;j<2;j++) {for(int k=0;k<2;k++) {ret.m[i][j]=(ret.m[i][j]+a.m[i][k]*b.m[k][j]%m)%m;}}}return ret; }void init() {for(int i=0;i<2;i++) unit.m[i][i]=1;return; }mat pow_mat(mat a,ll n){mat ret=unit;while (n){if(n&1) {ret=ret*a;}n>>=1;a=a*a;}return ret; }int main() {init ();scanf ("%lld%lld%lld",&a,&b,&m);ll f1=a-1+a*(sqrt (5)+1)/2;ll f2=f1*2-(a-1);mat A={1,1,1,0};mat B={f2,f1,0,0};mat C=pow_mat (A,b-1);C=B*C;cout<<C.m[0][1]<<endl;return 0; }?
?
?
?
總結
以上是生活随笔為你收集整理的数字迷阵(矩阵快速幂+结论题)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 算是卖了吧
- 下一篇: Mysql中使用Update From语