hdu 2065 「紅色病毒「問題

2021-10-09 05:13:11 字數 1522 閱讀 5525

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

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

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

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

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

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

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

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

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

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

420113

142460

case 1: 2

case 2: 72

case 3: 32

case 4: 0

case 1: 56

case 2: 72

case 3: 56

rabbit

寫出了前4個資料:2 6 20 72

發現拆開 2+0 4+2 16+4 64+8

得出 f ( x ) = ( 4 ^ ( n - 1 ) + 2 ^ ( n - 1 ) ) % 100 ;

#includeusing namespace std;

const int mod=100;

typedef long long ll;

typedef unsigned long long ull;

ull n;

int t;

ll ksm(ll x,ull y)

x*=x;

x=x%mod;

y/=2;

} return res;

}int main(){

while(cin>>t){

if(t==0)break;

for(int i=1;i<=t;i++){

cin>>n;

ll s;

s=(ksm(4,n-1)+ksm(2,n-1))%mod;

cout<<"case "《看別人的題解發現是可以通過指數型母函式然後用泰勒級數化解得到答案

g(x) = (1 + x^2/2! + x^4/4! +…)^2 * (1 + x + x^2/2! + x^3/3! +…)^2.用taylor展開處理一下可以得到:

g(x) = ( ( e ^ x + e ^ - x ) / 2 ) ^ 2 * e ^ ( 2 x ) = ( ( e ^ ( 2 x ) + 1 ) / 2 ) ^ 2 = ( e ^ ( 4 x ) + 2 * e ^ ( 2 x ) + 1 ) / 4

= ( σ 4 ^ n*x ^ n / n ! + 2 * σ 2 ^ n * x ^ n / n ! + 1 ) / 4

= 1 + σ( 4 ^ n + 2 * 2 ^ n ) / 4 * x ^ n / n !

hdu 2065 紅色病毒 問題

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

hdu 2065 紅色病毒 問題

problem description 醫學界發現的新病毒因其蔓延速度和internet上傳播的 紅色病毒 不相上下,被稱為 紅色病毒 經研究發現,該病毒及其變種的dna的一條單鏈中,胞嘧啶,腺嘧啶均是成對出現的。現在有一長度為n的字串,滿足一下條件 1 字串僅由a,b,c,d四個字母組成 2 a出...

hdu2065 紅色病毒 問題

思路 先暴力打個表,然後找規律.include includeint main int b 5 4 int64 n,m while scanf d t eof t printf n return 0 description 醫學界發現的新病毒因其蔓延速度和internet上傳播的 紅色病毒 不相上下...