题意:设FiF_iFi​为斐波拉契数列,求

∑i=0N(FiC)k\sum_{i=0}^N(F_{iC})^ki=0∑N​(FiC​)k

模109+910^9+9109+9

N,C≤1018,k≤105N,C\leq10^{18},k\leq10^5N,C≤1018,k≤105

把斐波拉契暴力拆开

FiC=15[(1+52)iC−(1−52)iC]F_{iC}=\frac 1 {\sqrt{5}}[(\frac {1+\sqrt{5}}2)^{iC}-(\frac {1-\sqrt{5}}2)^{iC}]FiC​=5​1​[(21+5​​)iC−(21−5​​)iC]

为了方便,忽略常数写成

Fic=Ai−BiF_{ic}=A^i-B^iFic​=Ai−Bi

所以

ans=∑i=0N(Ai−Bi)kans=\sum_{i=0}^N(A^i-B^i)^kans=i=0∑N​(Ai−Bi)k

=∑i=0N∑j=0k(kj)(−1)jA(k−j)iBj=\sum_{i=0}^N\sum_{j=0}^k\binom kj(-1)^jA^{(k-j)i}B^j=i=0∑N​j=0∑k​(jk​)(−1)jA(k−j)iBj

=∑i=0k(−1)i(kj)∑j=0N(Ak−jBj)i=\sum_{i=0}^k(-1)^i\binom kj\sum_{j=0}^N(A^{k-j}B^j)^i=i=0∑k​(−1)i(jk​)j=0∑N​(Ak−jBj)i

等比数列求和即可

复杂度O(nlog⁡M)O(n\log M)O(nlogM)

推式子先从简单的入手

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;
#define MAXN 100005
typedef long long ll;
const int MOD=1e9+9,N=1e5,p=383008016,A=(p+1ll)*(MOD+1)/2%MOD,B=(1ll+MOD-p)*(MOD+1)/2%MOD;
inline int qpow(int a,int p)
{int ans=1;while (p){if (p&1) ans=(ll)ans*a%MOD;a=(ll)a*a%MOD;p>>=1;}return ans;
}
int fac[MAXN],finv[MAXN],px[MAXN],py[MAXN];
int main()
{fac[0]=1;for (int i=1;i<=N;i++) fac[i]=(ll)fac[i-1]*i%MOD;finv[N]=qpow(fac[N],MOD-2);for (int i=N-1;i>=0;i--) finv[i]=(ll)finv[i+1]*(i+1)%MOD;int T;scanf("%d",&T);while (T--){ll n,c;int k;scanf("%lld%lld%d",&n,&c,&k);c%=MOD-1;int ans=0;int x=qpow(A,c),y=qpow(B,c);px[0]=py[0]=1;for (int i=1;i<=k;i++) px[i]=(ll)px[i-1]*x%MOD,py[i]=(ll)py[i-1]*y%MOD;for (int i=0;i<=k;i++) {int t=((i&1)? MOD-1ll:1ll)*fac[k]%MOD*finv[i]%MOD*finv[k-i]%MOD;int a=(ll)px[k-i]*py[i]%MOD;if (a==1) ans=(ans+(n+1ll)%MOD*t)%MOD;else ans=(ans+t*(qpow(a,(n+1ll)%(MOD-1))-1ll)%MOD*qpow(a-1,MOD-2))%MOD;}ans=(ll)ans*qpow(p,MOD-1-k)%MOD;printf("%d\n",ans);}return 0;
}

【杭电多校2020】Fibonacci Sum【斐波拉契通项】【推式子】相关推荐

  1. HDU1568 Fibonacci【斐波拉契数列】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. 欧拉降幂 ---- 2020 杭电多校[E - Fibonacci Sum]+欧拉降幂+和式的调整+二次剩余+毒瘤卡常

    解题思路: 首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子:首先你得知道斐波那契的通项式子: F(n)=15[(1+52)n−(1−52)n]F(n) = {1\over\sqrt5} ...

  3. C++large fibonacci大斐波那契数列的实现(附完整源码)

    C++large fibonacci大斐波那契数列的实现算法 C++large fibonacci大斐波那契数列的实现算法完整源码(定义,实现,main函数测试) 用于对任意大数执行算术运算的库lar ...

  4. [CS101] 转载:浅议Fibonacci(斐波纳契)数列求解

    原文转载自林健随笔的"浅议Fibonacci(斐波纳契)数列求解" Fibonacci 数列 描述了动物繁殖数量.植物花序变化等自然规律.作为一个经典的数学问题,Fibonacci ...

  5. Python - Python3 编程第一步 Fibonacci series: 斐波纳契数列

    Fibonacci series: 斐波纳契数列, 两个元素的总和确定了下一个数,例如:1 1 2 3 5 8 13 21 34 55 Python程序如下: def fibonacci1(n):a, ...

  6. python斐波拉契数列(Fibonacci)

    ##斐波拉契数列(Fibonacci) def Fibonacci(m):n,a,b=0,0,1 while n<m:print(b)a,b=b,a+bn +=1 return 'Done' # ...

  7. 斐波拉契(Fibonacci)数列

    斐波拉契数列一般指斐波那契数列 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故 ...

  8. 西电复试之——真题2013A 斐波那契数列

    西电复试之--真题2013A 斐波那契数列 F(0)=7; F(1)=11; F(n)=F(n-1)+F(n-2); #include<iostream> using namespace ...

  9. HDU - 1568 Fibonacci (斐波那契,大数取前几位

    2007年到来了.经过2006年一年的修炼,数学神童zouyu终于把0到100000000的Fibonacci数列 (f[0]=0,f[1]=1;f[i] = f[i-1]+f[i-2](i>= ...

最新文章

  1. SQL Server 存储过程的分页方案比拼
  2. “Linux频道”有链接打不开
  3. Android 触摸事件处理机制
  4. CodeForces - 831D Office Keys
  5. java idea 模块_使用IntelliJ IDEA搭建多maven模块JAVA项目
  6. 怎么让员工服从管理_职场 | 在职场中,遇到不服从管理的员工,该怎么办呢?...
  7. 使用pandas进行量化回测(akshare)
  8. 整理C# 二进制,十进制,十六进制 互转
  9. 【NOILinux】VmWare15使用技巧
  10. 每周荐书:微服务、SQL调优、机器学习(评论送书)
  11. 调通sina33下的AP6212A0(WIFI+BT)(V1.1版本)
  12. DIY 手动制作自己的win pe
  13. 林业行业上的调查规划设计资质办理管理办法
  14. nginx php spawn-fcgi,搭建CentOS+NGINX+Spawn-fcgi+CPP开发环境
  15. MySQL数据库:SQL语句优化
  16. SQL语句基础4/select查询语句练习
  17. 乐华娱乐IPO搁浅:王一博是旗下艺人 CMC阿里字节是股东
  18. DCMTK读取压缩格式的DICOM文件并使用Vtk显示
  19. 您需要对象吗,我帮你new一个吧?
  20. linux切割文件一半命令,Linux系统下切割文件的split命令用法

热门文章

  1. k8s 手动恢复redis 集群_二进制手动部署k8s-1.14高可用集群(二、集群部署)
  2. 有一个会泰勒级数的八岁表妹是怎样一种体验?
  3. 在床上玩手机,千万不能把手机放下!
  4. 陪孩子看完这几部高分纪录片,胜过出国亲子游!
  5. 这个被称为20世纪最伟大人物的最强理科生,到底有多强,你根本不了解
  6. inputn函数与input函数的区别
  7. mysql 非空语法_mysql从入门到优化(1)基本操作上
  8. ftp服务器新建虚拟目录,ftp服务器 虚拟目录
  9. python中with as用法_python 中关于with...as的用法
  10. activity 防止多次打开_Android开发Activity任务和返回栈