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 試除法,複雜度不允許,就算將所有的質數篩出後列舉質數也會超時。篩出質...