題目連線
給出k,m,求f(k)%m,其中
x<10時,f(x)=x
x>=10時,f(x)=a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10)
ai(0<=i<=9)會給出且只能為0或1
帶入公式易推導得
k>=10時,
f(k)=f(9)*b0+f(8)*b1+f(7)*b2+f(6)*b3+f(5)*b4+f(4)*b5+f(3)*b6+f(2)*b7+f(1)*b8+f(0)*b9;
其中,b1-b9可用以下矩陣求出:
該矩陣的a0-a9是題目給出,求出這個矩陣的(k-9)次方後的首行數即是b0-b9的值。這裡需要用到矩陣快速冪。
#include "bits/stdc++.h"
using
namespace
std;
typedef
long
long ll;
struct matrix //矩陣
;matrix in;
matrix e;
ll mod;
ll k;
matrix mul(matrix a, matrix b) //矩陣乘法}}
return ans;
}matrix quickpow(ll k) //快速冪
return ans;
}int main()
for(i = 1; i < 10; i++)
//所求矩陣初始化
if(k >= 10)
printf("%lld\n", pri);
}else
}return
0;}
hdu1757矩陣快速冪
這題不錯,開始看題目,以為是道水題,花幾分鐘打了個暴搜,果斷runtime error,棧溢位。於是馬上找規律,發現可以轉換成矩陣乘法和快速冪解決,不過由於審題不清,搞錯了a0.a9的順序,調了老半天才發現。hdu1757 win.cpp created on 2012 7 9 author ben...
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 ...