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 會超時,這裡引入快速冪來...