Codevs 1070 普通遞迴關係 矩陣乘法

2022-02-12 22:59:23 字數 1539 閱讀 5414

1070 普通遞迴關係

時間限制: 1 s

空間限制: 128000 kb

題目等級 :大師 master

題目描述 description

考慮以下定義在非負整數n上的遞迴關係

f(n) = f0 (if n = 0)

= f1 (if n = 1)

= a*f(n-1)+b*f(n-2) otherwise

其中a,b是滿足以下兩個條件的常數:

(1) a2+4b>0

(2) |a-sqrt(a2+4b)| <= 2 // sqrt是根號的意思

給定f0,f1, a, b和n,請你寫乙個程式計算fn,可以假定fn是絕對值不超過109的整數(四捨五入)。

輸入描述 input description

輸入檔案一行依次給出5個數,f0, f1, a, b和n, f0,f1是絕對值不超過109,n是非負整數,不超過109。另外,a、b是滿足上述條件的實數,且|a|,|b|<=106。

輸出描述 output description

輸出f(n)

樣例輸入 sample input

【樣例輸入1】

0 1 1 1 20

【樣例輸入2】

0 1 -1 0 1000000000

【樣例輸入3】

-1 1 4 -3 18

樣例輸出 sample output

【樣例輸出1】

6765

【樣例輸出2】

-1 【樣例輸出3】

387420487

資料範圍及提示 data size & hint

見輸入描述

分類標籤 tags

矩陣乘法 數論

/*

矩陣乘法.

斐波那契變式.

這樣刷水題真的好嗎...

注意是double

而且有乙個很坑的資料...

*/#include

#include

#define ll long long

using namespace std;

ll n;

double a1,b1,f0,f1,a[3][3],b[3][3],c[3][3],ans[3][3];

void mi()

for(int i=1;i<=2;i++)

for(int j=1;j<=2;j++)

for(int k=1;k<=2;k++)

c[i][j]=c[i][j]+b[i][k]*b[k][j];

for(int i=1;i<=2;i++)

for(int j=1;j<=2;j++)

b[i][j]=c[i][j],c[i][j]=0.0;

n>>=1;}}

void slove()

int main()

FPGA 程式130例 例10 7 例10 7

10.1 非流水線方式的8位全加器 module adder8 cout,sum,ina,inb,cin,clk output cout reg cout output 7 0 sum reg 7 0 sum input 7 0 ina,inb input cin reg 7 0 tempa,tem...

國慶訓練10 7

second tag 圖論,連通塊,中等 2033 poi2008 blo 時間限制 10秒 記憶體限制 162mb 題目描述 byteotia城市有n個 towns m條雙向roads.每條 road 連線 兩個不同的 towns 沒有重複的road.所有towns連通。輸入 輸入n 100000...

模擬測試107

t1 列舉中心所在位置,每次貪心找到左右最近的乙個相同字元移動。可以用單調指標掃。時間複雜度 o n 2 t2 兩個數的乘積為平方數,那麼這兩個數各自去掉平方因子後相等。去掉平方因子後可以用map統計答案。對於普通的 o sqrt 試除法,複雜度不允許,就算將所有的質數篩出後列舉質數也會超時。篩出質...