题意明确,不再阐述(

首先,众所周知的是 斐波那契数列 的生成函数是 \(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. 学习JSP篇:jsp简单介绍

    这几天开始学习JSP和Servlet,写些博客,记录自己的学习过程,算是自己从业开始的一个见证. 一.什么是JSP JSP的全称是Java Service Page,一种动态的网页开发技术,区别于静态 ...

  2. JMeter压力测试简单使用

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11915535.html JMeter压力测试简单使用: 我们可以使用JMeter来测试一下自己 ...

  3. Mybatis返回插入数据的主键的两种方式

    方式一: 需要在映射文件中添加如下片段: <insert id="insertProduct" parameterType="domain.model.Produc ...

  4. JavaWeb开发获取客户IP地址

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11737637.html 本地调试如果使用的是localhost进行访问, 则会获取到 0:0: ...

  5. go基础——切片slice

    package main import "fmt" /* 切片: 不定长的数组,是引用类型的数据,指向一个底层数组. */ func main() { //切片的创建和访问 var ...

  6. Scala概述及环境配置

    一.概述 1.1 为什么要学Scala? Spark是新一代的内存级大数据的计算框架,是大数据学习的重要内容.随着Spark的兴起,同时也带动了Scala的学习,因为Spark就是Scala编写的.为 ...

  7. SpringMVC5中,@ModelAttribute注解详解

    看这个注解的前提最好熟悉一下SpringMVC的model组件,该注解可以有五种使用方式: ①②③为 @ModelAttribute 跟@RequestMapping 分开修饰方法,被@ModelAt ...

  8. Solution -「ACM-ICPC BJ 2002」「POJ 1322」Chocolate

    \(\mathcal{Description}\)   Link.   \(c\) 种口味的的巧克力,每种个数无限.每次取出一个,取 \(n\) 次,求恰有 \(m\) 个口味出现奇数次的概率. \( ...

  9. OpenHarmony移植案例与原理:startup子系统之syspara_lite系统属性部件

    摘要:本文介绍下移植开发板时如何适配系统属性部件syspara_lite,并介绍下相关的运行机制原理. 本文分享自华为云社区<openharmony移植案例与原理 - startup子系统之sy ...

  10. Java不支持协程?那是你不知道Quasar!

    原创:微信公众号 码农参上,欢迎分享,转载请保留出处. 在编程语言的这个圈子里,各种语言之间的对比似乎就一直就没有停过,像什么古早时期的"PHP是世界上最好的语言"就不提了,最近我 ...