學習矩陣快速冪可以看這篇部落格 矩陣快速冪高階
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...