HDU 4291 A Short problem(矩陣快速冪+迴圈節)
題目連結“:
http://acm.hdu.edu.cn/showproblem.php?pid=4291
題意:
g(0)=0,g(1)=1;
g(n) = 3g(n - 1) + g(n - 2);
求g(g(g(n))) mod 109 + 7
分析:
首先我們得認識到,如果一層一層算是必定會超時的。
其次,取模運算是有迴圈節的。
step1我們找出g(x)%1000000007的迴圈節 mod1
step2 設g(g(n)) = g(x) x=g(n) 對mod1 取模得到mod2.
剩下的工作就是進行三次的快速冪運算 從內到外進行。
程式碼如下:
#include <iostream>
#include <cstdio>
using namespace std;
typedef long long LL;
const LL mod = 1e9+7;
const LL mod1 = 222222224;
const LL mod2 = 183120;
//´ò±íÕÒÑ»·½Ú
//mod 1e9+7 ===> mod1 ,mod mod1 ===>mod2;
/*
int main()
{
LL f0=0,f1=1;
for(LL i=1;;i++){
LL tmp = (3 * f1 + f0)%mod;
f0 = f1 ;
f1 = tmp;
if(f0==0&&f1==1){
printf("ans: %d\n",i);
break;
}
}
return 0;
}
*/
struct matrix{
LL a[2][2];
};
matrix I={
1,0,
0,1
};
matrix multi(matrix A,matrix B,int mod){
matrix C;
for(int i=0;i<2;i++){
for(int j = 0; j < 2;j++){
C.a[i][j]=0;
for(int k=0;k<2;k++)
C.a[i][j]=(C.a[i][j]+A.a[i][k]*B.a[k][j])%mod;
}
}
return C;
}
LL pow(matrix A ,LL n,LL mod){
matrix tmp = I;
while(n){
if(n&1)
tmp= multi(tmp,A,mod);
n>>=1;
A=multi(A,A,mod);
}
return tmp.a[0][0];
}
int main(){
LL n;
while(~scanf("%lld",&n)){
matrix A= {
3,1,
1,0
};
if(n>=2) n = pow(A,n-1,mod2);
if(n>=2) n = pow(A,n-1,mod1);
if(n>=2) n = pow(A,n-1,mod);
printf("%I64d\n",n);
}
return 0;
}
相關文章
- HDU 2256Problem of Precision(矩陣快速冪)矩陣
- HDU 1575 Tr A(矩陣快速冪)矩陣
- HDU 4565 So Easy!(矩陣快速冪)矩陣
- HDU 4686 (推公式+矩陣快速冪)公式矩陣
- FZU Problem 1692 Key problem(迴圈矩陣)矩陣
- HDU 4965 Fast Matrix Calculation(矩陣快速冪)AST矩陣
- HDU 2157 How many ways?? (矩陣快速冪)矩陣
- HDU 1005 Number Sequence(矩陣快速冪)矩陣
- HDU 1575 Tr A【矩陣快速冪取模】矩陣
- HDU 1005 Number Sequence:矩陣快速冪矩陣
- HDU5411CRB and Puzzle(矩陣快速冪)矩陣
- 矩陣快速冪矩陣
- HDU 2276 - Kiki & Little Kiki 2 (矩陣快速冪)矩陣
- HDU3221Brute-force Algorithm(矩陣快速冪&&指數降冪)Go矩陣
- 矩陣快速冪(快忘了)矩陣
- 矩陣快速冪總結矩陣
- LightOJ 1070 Algebraic Problem:矩陣快速冪 + 數學推導AI矩陣
- 【矩陣乘法】【快速冪】遞推矩陣
- 矩陣快速冪加速最短路矩陣
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- HDU 4549 M斐波那契數列(矩陣快速冪+費馬小定理)矩陣
- POJ 3613 Cow Relays 矩陣乘法Floyd+矩陣快速冪矩陣
- HDU 4549M斐波那契數列(矩陣快速冪+費馬小定理)矩陣
- HDU 2157 How many ways??:矩陣快速冪【i到j共經過k個節點的方法數】矩陣
- P3390 【模板】矩陣快速冪矩陣
- 從斐波那契到矩陣快速冪矩陣
- bzoj3240: [Noi2013]矩陣遊戲(矩陣乘法+快速冪)矩陣遊戲
- BZOJ 3329 Xorequ:數位dp + 矩陣快速冪矩陣
- UVA 10655 Contemplation! Algebra (矩陣快速冪)矩陣
- POJ 3150 Cellular Automaton(矩陣快速冪)矩陣
- 費馬小定理 + 費馬大定理 + 勾股數的求解 + 快速冪 + 矩陣快速冪 【模板】矩陣
- 第?課——基於矩陣快速冪的遞推解法矩陣
- POJ 2778-DNA Sequence(AC自動機+構建鄰接矩陣+矩陣快速冪)矩陣
- 2014多校聯合第9場1006||hdu 4965 矩陣乘法和快速冪矩陣
- hdu 1757 矩陣連乘矩陣
- bzoj4887: [Tjoi2017]可樂(矩陣乘法+快速冪)矩陣
- 【構造共軛函式+矩陣快速冪】HDU 4565 So Easy! (2013 長沙賽區邀請賽)函式矩陣
- poj--2778DNA Sequence+AC自動機+矩陣快速冪矩陣