快速冪 HDU2065 紅色病毒 問題

2021-07-11 05:46:12 字數 1142 閱讀 5247

problem description

醫學界發現的新病毒因其蔓延速度和internet上傳播的"紅色病毒"不相上下,被稱為"紅色病毒",經研究發現,該病毒及其變種的dna的一條單鏈中,胞嘧啶,腺嘧啶均是成對出現的。

現在有一長度為n的字串,滿足一下條件:

(1) 字串僅由a,b,c,d四個字母組成;

(2) a出現偶數次(也可以不出現);

(3) c出現偶數次(也可以不出現);

計算滿足條件的字串個數.

當n=2時,所有滿足條件的字串有如下6個:bb,bd,db,dd,aa,cc.

由於這個資料肯能非常龐大,你只要給出最後兩位數字即可.

input

每組輸入的第一行是乙個整數t,表示測試例項的個數,下面是t行資料,每行乙個整數n(1<=n<2^64),當t=0時結束.

output

對於每個測試例項,輸出字串個數的最後兩位,每組輸出後跟乙個空行.

sample input

414

2011314

2460

sample output

case 1: 2

case 2: 72

case 3: 32

case 4: 0

case 1: 56

case 2: 72

case 3: 56

好吧,其實我是海沒有搞懂這個公式怎麼來的,也沒有認真去看,有人是打表找規律,有人是用數學證明的公式;

我也就沒有辦法了,練習一下快速冪的使用就好了,有時間再深入看看吧

**:

#include#include#define ll long long

#define mod 100

using namespace std;

//a[n]=8*a[n-2]+6*a[n-1];

int fastmi(ll a,ll b) // a^b;

base=(base*base)%mod;

b>>=1;

}return res%mod;

}int main()

cout<}

return 0;

}

HDU2065 紅色病毒 問題(矩陣快速冪)

題意 中文題,不再描述。分析 參考這篇部落格,寫的非常好,我也是看的的。個人理解 我把原文的狀態轉移方程又補充了一下。為0是因為下乙個狀態不能由當前狀態得到。然後提取出係數得到矩陣 const matrix p 接下來就是然後建立乙個矩陣乘法函式 matrix multi const matrix ...

HDU 2065 紅色病毒

思路 a c a c a c 奇偶 奇奇 奇 偶奇 偶偶 偶 設a 偶 c 偶 的方法數為g n 則 g n ac 偶偶 ac 偶偶 ac 奇偶 ac 偶奇 由於對稱可知 ac 奇偶 ac 偶奇 故 g n 2 ac 偶 令ac 偶 f n 則g n 2 f n 1 下面討論f n f n ac 奇...

hdu 2065 紅色病毒 問題

複習母函式,發現這道題可以用矩陣快速冪。然後做了一下 母函式 看起來好複雜的樣子 列dp方程,構造矩陣 dp n dp i 0 表示放到了第i位,前i位中有 偶數個a,有 偶數個c dp i 1 表示放到了第i位,前i位中有 奇數個a,有 偶數個c dp i 2 表示放到了第i位,前i位中有 偶數個...