题意明确,不再阐述(

首先,众所周知的是 斐波那契数列 的生成函数是 \(F(x)=\frac x {1-x-x^2}\)

那么答案就是 \(\sum_{i=0} F^i(x) = \frac 1 {1-F(x)} = \frac {1-x-x^2} {1-2x-x^2}\) 的第 \(n\) 项。

首先我们把分子和分母分开考虑,因为如果知道了分母所代表的生成函数的第 \(n\) 项,答案就很明显了。。。

尝试把 \(\frac 1 {1-2x-x^2}\) 分解成 \(\frac A {1-ax} - \frac B {1-bx}\) 的形式。

解 \(-x^2 -2x +1 =0\) 这个方程,得到 \(x_1 = -1 + \sqrt 2\),\(x_2 = -1 - \sqrt 2\)

根据因式定理可得:

\[1 -2x -x^2 = (-1)(-1 + \sqrt 2 -x)(-1 - \sqrt2 -x)
\]
\[\frac 1 {1 -2x -x^2} = - \frac 1 {(-1 +\sqrt 2 -x)(-1 -\sqrt 2 -x)}
\]

然后我们发现 \(\frac 1 {-1 -\sqrt 2 -x} - \frac 1 {-1 +\sqrt 2 -x} = \frac {2\sqrt 2} {(-1 +\sqrt 2 -x)(-1 -\sqrt 2 -x)}\)

那么:

\[\frac 1 {1 -2x -x^2} = (\frac 1 {-1 +\sqrt 2 -x} - \frac 1 {-1 -\sqrt 2 -x})\frac 1 {2\sqrt 2}
\]

看一下括号里边的东西,我们知道 \(\frac 1 {a - x} = \frac {\frac 1 a} {1 - \frac 1 a x}\),然后括号里变成了这样:

\[\frac {1 + \sqrt 2} {1 - (1 + \sqrt 2)x} - \frac {1 - \sqrt 2} {1 - (1 - \sqrt 2)x}
\]

显然,第 \(n\) 项为 \((1 +\sqrt 2)^{n+1} - (1 -\sqrt 2)^{n+1}\)

乘上右边的 $\frac 1 {2\sqrt 2} $ 和 $ 1 -x -x^2$,答案就是:

\[\frac 1 {2\sqrt 2}((1 +\sqrt 2)^{n+1} + (1 +\sqrt 2)^n + (1 +\sqrt 2)^{n-1} - ((1 -\sqrt 2)^{n+1} + (1 -\sqrt 2)^n + (1 -\sqrt 2)^{n-1}))
\]

化简可得:

\[ans = \frac {\sqrt 2} 4((1 +\sqrt2)^n - (1 -\sqrt 2)^n)
\]

然后我们用二次剩余可知:

\[59713600 \equiv \sqrt 2 \pmod {10^9+7}
\]

那么就可以 \(O(\log mod)\) 愉快地做掉了。

代码:

#include<cctype>
#include<cstdio>
const int mod=1e9+7,MOD=mod-1,sqrt2=59713600ll;
inline int Add(const int&a,const int&b){
return a+b>=mod?a+b-mod:a+b;
}
inline int Del(const int&a,const int&b){
return a-b<0?a-b+mod:a-b;
}
inline int pow(int a,int b){
int ans=1;
for(;b;b>>=1,a=1ll*a*a%mod)if(b&1)ans=1ll*ans*a%mod;
return ans;
}
signed main(){
char s=getchar();int n=0;
while(n=(n*10ll+(48^s))%MOD,s=getchar(),s>=48&&s<=58);
printf("%d",1ll*sqrt2*pow(4,mod-2)%mod*Del(pow(Add(1,sqrt2),n),pow(Del(1,sqrt2),n))%mod);
}

LGP4451题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Ubuntu下Java JDK安装

    1.仓库安装 待更新 2.手动安装 1.下载linux平台sdk. 官网:https://www.oracle.com/technetwork/java/javase/downloads/index. ...

  2. 【收藏】Supervisor的作用与配置

    原文链接:https://www.jianshu.com/p/0226b7c59ae2 supervisor supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supe ...

  3. Linux防火墙(iptables/firewalld)

    Linux防火墙(iptables/firewalld) 目录 Linux防火墙(iptables/firewalld) 一.iptables 1. iptables概述 2. netfilter和i ...

  4. pytest(8)-参数化

    前言 什么是参数化,通俗点理解就是,定义一个测试类或测试函数,可以传入不同测试用例对应的参数,从而执行多个测试用例. 例如对登录接口进行测试,假设有3条用例:正确账号正确密码登录.正确账号错误密码登录 ...

  5. Solution -「ARC 063D」「AT 2149」Snuke's Coloring 2

    \(\mathcal{Decription}\)   Link.   平面上有一个左下角坐标 \((0,0)\) 右上角坐标 \((W,H)\) 的矩形,起初长方形内部被涂白. 现在给定 \(n\) ...

  6. Solution -「CF 1375G」Tree Modification

    \(\mathcal{Description}\)   Link.   给定一棵 \(n\) 个结点的树,每次操作选择三个结点 \(a,b,c\),满足 \((a,b),(b,c)\in E\),并令 ...

  7. .NET 云原生架构师训练营(权限系统 代码实现 Identity)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

  8. Python基础—文件操作(Day8)

    一.文件操作参数 1.文件路径 1)绝对路径:从根目录开始一级一级查找直到找到文件. f=open('e:\文件操作笔记.txt',encoding='utf-8',mode='r') content ...

  9. 【曹工杂谈】Mysql-Connector-Java时区问题的一点理解--写入数据库的时间总是晚13小时问题

    背景 去年写了一篇"[曹工杂谈]Mysql客户端上,时间为啥和本地差了整整13个小时,就离谱",结果最近还真就用上了. 不是我用上,是组内一位同事,他也是这样:有个服务往数据库in ...

  10. mysql视图,索引

    一.视图 View 视图是一个虚拟表,是sql语句的查询结果,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据,在使用视图时动态生成.视图的数据变化会影响到基表,基表的数据变化也会 ...