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