ZZY的寵物(矩陣運算 快速冪)

2021-06-15 08:08:17 字數 1868 閱讀 3228

e:

zzy的寵物 描述

zzy領養了一對剛剛出生的不知名小寵物

..巨萌巨可愛

!!...

小寵物的生命為

5個單位時間並且不會在中間出意外翹辮子(如

: 從0出生能活到

5但活不到

6)..

小寵物經過

2個單位時間成熟

..剛剛成熟的一對小寵物能立即生育

6只新的小寵物(如

: 從0出生的一對在

2時成熟並進行第一次生育)

...小寵物是很忠誠的

..不會在中途換伴侶

..每對小寵物生育一次這一對的生育能力就會降低2個

..也就是說一對小寵物在第二次生育時就只能生4個了

..小寵物成熟後每個單位時間都會盡力的生育(例

: 從0出生的一對

..2時間生6個

..3時間生4個

..4時間生2個

...5

時間生不出

..6時間這一對已經掛了

..)..

生育出來的新小寵物會繼續這個過程

.. zzy想知道從單位時間0開始

..經過

m個單位時間

(時間為m時

)將有多少只活著的小寵物

(0時刻有

2只小寵物

)因為zzy

隱隱地覺得什麼地方怪怪的

...所以請將這個數目

mod 10000 

輸入多組資料讀到eof

每組資料一行:  

m ( 0<=m<=2000000000 )

最多500

組資料 

輸出每組輸出一行為  case 

組號: 

答案,即

m時刻活著的小寵物個數

%10000

樣例輸入0

1 2

3 4

8 樣例輸出

case 1: 2

case 2: 2

case 3: 8

case 4: 12

case 5: 32

case 6: 528

分析:zzy大牛出的題目,就是不一樣。看了很久,聽了報告,知道要用矩陣來處理這個題目,可以分析出其特徵矩陣為

1 0 0 0 0 0

0 1 0 0 0 0

0 0 1 0 0 0

0 0 0 1 0 0

0 0 0 0 1 0

0 1 2 3 0 1

目標矩陣為p[6][6]

但只用最後一列來儲存結果,並且最終結果是放在p[5]裡的,可以把矩陣初始化為

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

2 0 0 0 0 0

只是儲存初始情況,到最後求出(p[5][0]+p[5][1]+p[5][2]+p[5][3]+p[5][4]+p[5][5])%10000就可以得到最後的結果。

**:#include #include #includeusing namespace std;

#define max 6

#define mod 10000

struct matrix

s,p,h;

matrix gete()//得到單位矩陣

return p;

}int main(){

int count=0;

int m,result;

memset(s.s,0,sizeof(s.s));

memset(h.s,0,sizeof(h.s));

s.s[5][0]=2;

for(int i=0;i

矩陣運算 快速冪

矩陣乘法必須滿足第乙個矩陣的列等於第二個矩陣的行。結果矩陣的行是第乙個矩陣的行,列是第二個矩陣的列。矩陣乘法行列各元素相乘。矩陣快速冪利用冪的二分優化。利用運算子過載進行一系列更方便的操作。整數快速冪取模 template long long ipow type x,type n,type mod ...

矩陣運算及 快速冪求矩陣

矩陣運算 這裡主要是針對方陣 是很重要的乙個環節,先說加法吧 加法比較簡單,同行同列想加就可以運算的 mat operator mat a,mat b 其次就是乘法 原理也簡單 線性代數應該學過,a i k 和 b k j 和做乘積運算得到c i j mat operator mat a,mat b...

快速冪(矩陣快速冪)

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果 sample input 3sample output 40 分析 利用等比數列的求和公式得所求和是 3 n 1 1 2,如果暴力求3 n 1 會超時,這裡引入快速冪來...