正题

题目链接:https://www.luogu.com.cn/problem/P4451


题目大意

给出nnn,对于所有满足∑i=1mai=n\sum_{i=1}^ma_i=n∑i=1m​ai​=n且∀ai∈N+\forall a_i\in N^+∀ai​∈N+的序列求
∑m=1∞∏i=1mFbiai\sum_{m=1}^{\infty}\prod_{i=1}^mFbi_{a_i}m=1∑∞​i=1∏m​Fbiai​​
其中FbixFbi_xFbix​表示第xxx个斐波那契数

1≤n≤101041\leq n\leq 10^{10^4}1≤n≤10104


解题思路

因为刚学特征方程所以推的都会写下来,比较冗长

首先考虑斐波那契的生成函数F(x)=∑i=0nFbiixiF(x)=\sum_{i=0}^nFbi_ix^iF(x)=∑i=0n​Fbii​xi
那么有F(x)=x2F(x)+xF(x)+xF(x)=x^2F(x)+xF(x)+xF(x)=x2F(x)+xF(x)+x,可以解得F(x)=x1−x−x2F(x)=\frac{x}{1-x-x^2}F(x)=1−x−x2x​。

然后答案就是
∑i=0∞F(x)i=11−F(x)=11−x1−x−x2=1−x−x21−2x−x2\sum_{i=0}^{\infty}F(x)^i=\frac{1}{1-F(x)}=\frac{1}{1-\frac{x}{1-x-x^2}}=\frac{1-x-x^2}{1-2x-x^2}i=0∑∞​F(x)i=1−F(x)1​=1−1−x−x2x​1​=1−2x−x21−x−x2​
然后11−2x−x2\frac{1}{1-2x-x^2}1−2x−x21​是一个特征方程为1−2x−x21-2x-x^21−2x−x2的递推式,也就是an=2an−1+an−2a_n=2a_{n-1}+a_{n-2}an​=2an−1​+an−2​。
然后G(x)=∑i=0∞aixiG(x)=\sum_{i=0}^{\infty}a_ix^iG(x)=∑i=0∞​ai​xi,那么答案就是
(1−x−x2)G(x)=∑i=0∞(ai−ai−1−ai−2)xi=∑i=0∞ai−1xi(1-x-x^2)G(x)=\sum_{i=0}^{\infty}(a_i-a_{i-1}-a_{i-2})x^i=\sum_{i=0}^\infty a_{i-1}x^i(1−x−x2)G(x)=i=0∑∞​(ai​−ai−1​−ai−2​)xi=i=0∑∞​ai−1​xi

所以我们要求的第nnn项就是an−1a_{n-1}an−1​

用特征方程化前面那个递推式了,解出1−2x−x2=01-2x-x^2=01−2x−x2=0有x0=2+1,x1=−2+1x_0=\sqrt 2+1,x_1=-\sqrt 2+1x0​=2​+1,x1​=−2​+1
然后设an=c0x0n+c1x1na_n=c_0x_0^n+c_1x_1^nan​=c0​x0n​+c1​x1n​带入a0=1a_0=1a0​=1和a1=2a_1=2a1​=2有方程
{c0+c1=1c0(2+1)+c1(−2+1)=2\left\{\begin{matrix}c_0+c_1=1\\c_0(\sqrt2+1)+c_1(-\sqrt 2+1)=2\end{matrix}\right.{c0​+c1​=1c0​(2​+1)+c1​(−2​+1)=2​
解出来就是
{c0=2+24c1=2−24\left\{\begin{matrix}c_0=\frac{2+\sqrt 2}{4}\\c_1=\frac{2-\sqrt 2}{4}\end{matrix}\right.{c0​=42+2​​c1​=42−2​​​
然后我们就有
an=2+24(2+1)n+2−24(−2+1)na_n=\frac{2+\sqrt 2}{4}(\sqrt 2+1)^n+\frac{2-\sqrt 2}{4}(-\sqrt 2+1)^nan​=42+2​​(2​+1)n+42−2​​(−2​+1)n

然后二次剩余跑出来在模109+710^9+7109+7下2=59713600\sqrt 2=597136002​=59713600带进去做就好了。

时间复杂度O(log⁡n)O(\log n)O(logn)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll g2=59713600,P=1e9+7;
char s[11000];ll n;
ll power(ll x,ll b){ll ans=1;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans;
}
signed main()
{scanf("%s",s+1);n=strlen(s+1);ll p=0;for(ll i=1;i<=n;i++)p=(p*10+s[i]-'0')%(P-1);ll inv=(P+1)/4;ll c1=(2-g2+P)%P*inv%P,c2=(2+g2)*inv%P;ll t1=c1*power(P-g2+1,p)%P*power(P-g2+1,P-2)%P;ll t2=c2*power(g2+1,p)%P*power(g2+1,P-2)%P;printf("%lld\n",(t1+t2)%P);return 0;
}

P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】相关推荐

  1. Luogu4451 [国家集训队]整数的lqp拆分

    题目链接:洛谷 题目大意:求对于所有$n$的拆分$a_i$,使得$\sum_{i=1}^ma_i=n$,$\prod_{i=1}^mf_{a_i}$之和.其中$f_i$为斐波那契数列的第$i$项. 数 ...

  2. [国家集训队]整数的lqp拆分 数学推导 打表找规律

    题解: 考场上靠打表找规律切的题,不过严谨的数学推导才是本题精妙所在: 求:$\sum\prod_{i=1}^{m}F_{a{i}}$ 设 $f(i)$ 为 $N=i$ 时的答案,$F_{i}$ 为斐 ...

  3. happiness[国家集训队2011(吴确)]

    [试题来源] 2011中国国家集训队命题答辩 [问题描述] 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科 ...

  4. P2619 [国家集训队]Tree I(WQS二分/带权二分/最小生成树)

    P2619 [国家集训队]Tree I 给定一个n个点,m条边的无向图,每条边有一个颜色黑色或者白色,求解恰好有k条白色边的最小生成树. 那么看到恰好选择k个的最优性问题,我们可以利用WQS二分解决, ...

  5. P1829 [国家集训队]Crash的数字表格 / JZPTAB

    P1829 [国家集训队]Crash的数字表格 / JZPTAB 题意: 求∑i=1n∑j=1mlcm(i,j)\sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j)∑i=1n​∑j ...

  6. 国家集训队2011 happiness

    [试题来源] 2011中国国家集训队命题答辩 [问题描述] 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为了好朋友.这学期要分文理科了,每个同学对于选择文科 ...

  7. 国家集训队论文分类整理[转]

    国家集训队论文分类整理 转自这里 dalao写的东西,是非常有学习价值的.反正noip不一定会用,但是对以后肯定有用的. 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用&g ...

  8. 国家集训队论文分类整理

    国家集训队论文分类整理 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化思想在统计问题中的应用> 2007 - 周冬 ...

  9. 国家集训队论文分类整理(转)

    国家集训队论文分类整理 ----------转自https://www.cnblogs.com/AbandonZHANG/archive/2012/07/21/2601889.html 距离ACM/I ...

最新文章

  1. 通过base标签实现全网页新窗口链接。
  2. 安装程序无法创建新的系统分区也无法定位现有分区的解决方法
  3. C#9.0 终于来了,您还学的动吗? 带上VS一起解读吧!
  4. python下载matplotlib.finance模块_关于Matplotlib中No module named 'matplotlib.finance'的解决办法...
  5. oracle sql条件语句,谁能介绍下Oraclesql之条件语句?
  6. 移动app测试的多样性_快速搞定APP移动端自动化测试
  7. 手指甲上的月牙辨健康,月牙会“丢”也能“长回来”
  8. (作者:无名`)svn提交代码到本地仓库
  9. CentOS 7上安装 MongoDB数据库 4.0.0最新版
  10. XenServer 6.5实战系列之十三:图形界面安装Linux Redhat系统
  11. 一次openresty http.lua 性能调优之旅
  12. 【前端 · 面试 】HTTP 总结(六)—— HTTP 版本区别
  13. 石子合并简化版(区间DP)
  14. 关于fineui中在gird中插入按钮的知识
  15. Buildroot用户手册
  16. 【测试】嵌入式软件测试VS一般软件测试
  17. XiaomiRouter自学之路(02-软硬件环境搭建)
  18. HDU 6143 Killer Names(容斥+组合)
  19. 数据库锁的概念与介绍
  20. python Django 连接mysql数据库创建表详细全过程

热门文章

  1. easyui数据请求两个url_jQuery Easyui datagrid连续发送两次请求问题
  2. doxygen如何生成JAVA文档_有用Doxygen生成文档的吗?发一篇Doxygen的使用文档给大家,从网上搜来的。...
  3. Java交流|面试最后一问:你有什么问题想问我吗?
  4. laya 怎么生成签名_PHP开发API接口签名生成及验证
  5. java代码实现链表_java单链表代码实现
  6. java servlet 跳转_Servlet跳转方式sendReDirect()和forward()
  7. 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!
  8. [MyBatisPlus]Plus分页插件的配置和使用
  9. [SpringBoot2]原生组件注入_原生注解与Spring方式注入
  10. [剑指offer]面试题22:栈的压入、弹出序列