#P4593. 普通递归关系

普通递归关系

题目描述

考虑以下定义在非负整数 nn 上的递归关系:

$F(n)=\begin{cases}f_0,& n=0\\f_1,&n=1\\a\times F(n-1)+b\times F(n-2),& otherwise\end{cases}$

其中 aabb 是满足以下两个条件的常数:

  • a2+4b>0a^2+4b>0
  • aa2+4b2|a-\sqrt{a^2+4b}| \le 2

给定 f0,f1,af_0,f_1,abbnn,请你写一个程序计算 F(n)F(n),可以假定 F(n)F(n) 是绝对值不超过 10910^9 的整数(四舍五入)。

输入格式

输入文件一行依次给出 55 个数 f0,f1,a,bf_0,f_1,a,bn,f0,f1n,f_0,f_1 是绝对值不超过 10910^9nn 是非负整数,不超过 10910^9。另外, a,ba,b 是满足上述条件的实数,且 a,b106|a|,|b|≤10^6

输出格式

输出一行一个数,即 F(n)F(n)

0 1 1 1 20
0 1-1 0 1000000000
-1 1 4 -3 18
6765
-1
387420487

提示

F(n)=kn(f1mf0)mn(f1kf0)kmF(n)=\frac{k^n(f_1-mf_0)-m^n(f_1-kf_0)}{k-m}

其中:m,k=a±a2+4b2m,k=\frac{a\pm \sqrt{a^2+4b}}{2}

数据范围

  • 0<n1090<n \le 10^9
  • f0,f1109|f_0,f_1| \le 10^9
  • a,ba,b 为实数,且 a,b106|a,b|\le 10^6