#3972. 普通递归关系

    ID: 3972 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>斐波那契数信息学奥赛之数学一本通例1.6.1习题6.5.1

普通递归关系

题目描述

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

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

其中a、b是满足以下两个条件的常数:

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

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

输入格式

输入文件一行依次给出5个数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

来源

  • 信息学奥赛之数学一本通
  • stong9070整理