Count(矩陣快速冪)

2021-09-13 03:33:23 字數 1238 閱讀 2715

學習矩陣快速冪可以看這篇部落格     矩陣快速冪高階

description

farmer john有n頭奶牛. 

某天奶牛想要數一數有多少頭奶牛,以一種特殊的方式: 

第一頭奶牛為1號,第二頭奶牛為2號,第三頭奶牛之後,假如當前奶牛是第n頭,那麼他的編號就是2倍的第n-2頭奶牛的編號加上第n-1頭奶牛的編號再加上自己當前的n的三次方為自己的編號. 

現在farmer john想知道,第n頭奶牛的編號是多少,估計答案會很大,你只要輸出答案對於123456789取模. 

input

第一行輸入乙個t,表示有t組樣例 

接下來t行,每行有乙個正整數n,表示有n頭奶牛 (n>=3) 

其中,t=10^4,n<=10^18

output共t行,每行乙個正整數表示所求的答案

sample input53

691215 

sample output

31700

7486

64651

527023

字有點亂,嘿嘿

#include #include #include #include #include using namespace std;

typedef long long ll;

const long long int n = 123456789;

void matrix(ll (&a)[6][6],ll b[6][6])

; for(i = 0; i < 6; ++i)

for(j = 0; j < 6; ++j)

for(k = 0; k < 6; ++k)

tmp[i][j] = (tmp[i][j] + a[i][k] * b[k][j]) % n;

for(i = 0; i < 6; ++i)

for(j = 0; j < 6; ++j)

a[i][j] = tmp[i][j];

}int main()

{ ll sum,t,a,b,n;

cin>>t;

while(t--)

{cin>>n;

a=1;

b=2;

if(n==1)

{cout<

Count(矩陣快速冪)

farmer john有n頭奶牛.某天奶牛想要數一數有多少頭奶牛,以一種特殊的方式 第一頭奶牛為1號,第二頭奶牛為2號,第三頭奶牛之後,假如當前奶牛是第n頭,那麼他的編號就是2倍的第n 2頭奶牛的編號加上第n 1頭奶牛的編號再加上自己當前的n的三次方為自己的編號.現在farmer john想知道,第...

count (類插頭DP 矩陣快速冪)

題目大意 有n個點,編號為1 n。第i個點和第j個點之間有一條無向邊當且僅當 i j k。求這個圖的生成樹個數。k 5,n 1015 k 5 n 10 15。題目分析 coming在他初二時的資料裡找到的一道題,是我校上古大神cdc給的。我不得不吐槽 難道前幾屆的dalao初二就能做這種題了嗎?而且...

hdu6470 Count 矩陣快速冪

奶牛的編號規則 當前奶牛是第n頭,那麼他的編號就是2倍的第n 2頭奶牛的編號加上第n 1頭奶牛的編號再加上自己當前的n的三次方為自己的編號.第一頭奶牛為1號,第二頭奶牛為2號 第n頭奶牛的編號是多少,答案模123456789 題解 給你公式 很明顯這是一道矩陣快速冪的題目 f n f n 1 f n...