Count(矩陣快速冪)

2021-09-26 07:01:53 字數 1912 閱讀 1016

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=104,n<=1018

output

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

sample input53

691215

sample output

31700

7486

64651

527023

const是乙個c語言(ansi c)的關鍵字,具有著舉足輕重的地位。它限定乙個變數不允許被改變,產生靜態作用。使用const在一定程度上可以提高程式的安全性和可靠性。另外,在**別人**的時候,清晰理解const所起的作用,對理解對方的程式也有一定幫助。另外const在其它程式語言中也有出現,例如pascal、c++、php5、b#.net、hc08 c、c#等。

const long &i=10; /由於編譯器的優化,使得在const long i=10; 時i不被分配記憶體,而是已10直接代入以後的引用中,以致在以後的**中沒有錯誤,為達到說教效 果,特別地用&i明確地給出了i的記憶體分配。不過一旦你關閉所有優化措施,即使const long i=10;也會引起後面的編譯錯誤。/

ac**:

#include

#include

#include

#include

#include

using

namespace std;

int t;

long

long

int n;

int f=6;

long

long

int mod=

123456789

;struct node

;node a,b,c;

node mul

(node a,node b)}}

return ans;

}node ksm

(node a,

long

long

int b)

while

(b) b>>=1;

a=mul(a,a);}

return res;

}int

main()

// coutprintf

("%lld\n"

,c.m[1]

[1]%mod);}

return0;

}/*204

234325

23534534

235325452245

3252454325235

213534534524524

3252345245234532

325425235235235245

235234523524523423

32423423423423

234324234535324

324324235435235

32543252353252345

235234542543332

2345235235233243

325455322345435

2354354353432423

23454332354543

45434343543534

643453423652654

*/

Count(矩陣快速冪)

學習矩陣快速冪可以看這篇部落格 矩陣快速冪高階 description farmer john有n頭奶牛.某天奶牛想要數一數有多少頭奶牛,以一種特殊的方式 第一頭奶牛為1號,第二頭奶牛為2號,第三頭奶牛之後,假如當前奶牛是第n頭,那麼他的編號就是2倍的第n 2頭奶牛的編號加上第n 1頭奶牛的編號再加...

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...