題意:
m斐波那契數列f[n]是一種整數數列,它的定義如下:
f[0] = a
f[1] = b
f[n] = f[n-1] * f[n-2] ( n > 1 )
現在給出a, b, n,你能求出f[n]的值嗎?
這題的話,看a ,b 的指數,剛好可以使用斐波那契數列求解。
然後用矩陣做。
a^b %c 這題的c是質素,而且a,c是互質的。
所以直接a^(b%(c-1)) %c
1 #include2 #include3 #include4 #include5 #include6 #include7 #include8using
namespace
std;
9#define mod 1000000007
10#define pb(a) push_back(a)
11const
int inf=0x3f3f3f3f;12
const
double eps=1e-5
;13 typedef long
long
ll;14
#define cl(a) memset(a,0,sizeof(a))
15#define ts printf("*****\n");
16const
int maxn=30010;17
intn,m,tt,cnt;
18struct
matrix19;
22matrix mul(matrix a,matrix b)
2334}35
return
ret;36}
37 matrix pow_m(matrix a,int
n)38
49return
ret;50}
51long
long pow_m(long
long a,long
long
n)52
62 temp*=temp;
63 temp%=mod;
64 n>>=1;65
}66return
ret;67}
68int
main()
6984 }
HDU 4549 M斐波那契數列(矩陣快速冪)
m斐波那契數列 題意 f 0 a,f 1 b,f n f n 1 f n 2 給定 a,b,n 求 f n 題解 暴力打表後發現 f n a b 斐波那契數列可用矩陣快速冪求解。但是此題中n較大,fib會爆掉。這時候需要引入費馬小定理優化。證明 a x p a p 1.a x p a p 2.a x...
hdu 4965 矩陣快速冪
給定兩個矩陣a,b,分別為n k和k n 求出矩陣c a b,矩陣m c n n 將矩陣m中的所有元素取模6,得到新矩陣m 並計算矩陣m 中所有元素的和 注意到ba 得到 6 6,而ab 得到1000 1000 轉化乘法算式為 m abababab.a ba n n 1 b 直接用矩陣快速冪即可 i...
快速矩陣冪HDU2276
題意 有n盞燈,編號為1到n。0表示不亮,1表示亮,如果 i th的燈的左邊燈是亮的,那麼下一秒鐘,i th燈的狀態要改變,0變成1,1變成0。第1個燈的 左邊是第n個燈 輸入t,輸入開始的狀態 問你在第t秒時,燈的狀態時什麼樣的,輸出來。分析 可推出下一秒的狀態a i a i 1 n n a i ...