题目大意
给定l,r,k,求出:
∑i=lr(fi+2k)
f(n)=n,n≤1
f(n)=f(n−1)+f(n−2),n>1
数据范围
k≤500,0≤l≤r≤1018
题解
因为(xk)=x!k!(x−k)!,因此(xk)可以写成一个k次的多项式,再前缀和减一下,问题变成要求:
令a=1+5√2,b=1−5√2,我们知道:
fn=5√5(an−bn),因此有:
===∑i=0rfki∑i=0r(5√5(ai−bi))k(5√5)k∑i=0r∑j=0k(kj)aij(−b)i(k−j)(5√5)k∑j=0k(−1)k−j(kj)∑i=0n(ajbk−j)i
我们现在将每个数表示成x=a+b5√的形式,我们可以很轻松的定义这些数的加减乘运算,那么最后我们相当于枚举j,求出
因为每个fi都是整数,因此最终求出来的数x的
时间复杂度:
O(k2logr)