P4451-[国家集训队]整数的lqp拆分【生成函数,特征方程】
正题
题目链接:https://www.luogu.com.cn/problem/P4451
题目大意
给出\(n\),对于所有满足\(\sum_{i=1}^ma_i=n\)且\(\forall a_i\in N^+\)的序列求
\]
其中\(Fbi_x\)表示第\(x\)个斐波那契数
\(1\leq n\leq 10^{10^4}\)
解题思路
因为刚学特征方程所以推的都会写下来,比较冗长
首先考虑斐波那契的生成函数\(F(x)=\sum_{i=0}^nFbi_ix^i\)
那么有\(F(x)=x^2F(x)+xF(x)+x\),可以解得\(F(x)=\frac{x}{1-x-x^2}\)。
然后答案就是
\]
然后\(\frac{1}{1-2x-x^2}\)是一个特征方程为\(1-2x-x^2\)的递推式,也就是\(a_n=2a_{n-1}+a_{n-2}\)。
然后\(G(x)=\sum_{i=0}^{\infty}a_ix^i\),那么答案就是
\]
所以我们要求的第\(n\)项就是\(a_{n-1}\)
用特征方程化前面那个递推式了,解出\(1-2x-x^2=0\)有\(x_0=\sqrt 2+1,x_1=-\sqrt 2+1\)
然后设\(a_n=c_0x_0^n+c_1x_1^n\)带入\(a_0=1\)和\(a_1=2\)有方程
\]
解出来就是
\]
然后我们就有
\]
然后二次剩余跑出来在模\(10^9+7\)下\(\sqrt 2=59713600\)带进去做就好了。
时间复杂度\(O(\log n)\)
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拆分【生成函数,特征方程】的更多相关文章
- 洛谷P4451 [国家集训队]整数的lqp拆分 [生成函数]
传送门 题意简述:语文不好不会写,自己看吧 思路如此精妙,代码如此简洁,实是锻炼思维水经验之好题 这种题当然是一眼DP啦. 设\(dp_n\)为把\(n\)拆分后的答案.为了方便我们设\(dp_0=1 ...
- BZOJ 2173 luoguo P4451 [国家集训队]整数的lqp拆分
整数的lqp拆分 [问题描述] lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 , ...
- 洛谷P4451 [国家集训队]整数的lqp拆分(生成函数)
题面 传送门 题解 我对生成函数一无所知 我们设\(F(x)\)为斐波那契数列的生成函数,\(G(x)\)为答案的生成函数,那么容易得到递推关系 \[g_n=\sum_{i=0}^{n-1}f_ig_ ...
- 洛谷 P4451 [国家集训队]整数的lqp拆分
洛谷 这个题目是黑题,本来想打表的,但是表调不出来(我逊毙了)! 然后随便打了一个递推,凑出了样例, 竟然. 竟然.. 竟然... A了!!!!!!! 直接:\(f[i]=f[i-1]*2+f[i-2 ...
- P4451 [国家集训队]整数的lqp拆分
#include <bits/stdc++.h> using namespace std; typedef long long LL; inline LL read () { LL res ...
- Luogu4451 [国家集训队]整数的lqp拆分
题目链接:洛谷 题目大意:求对于所有$n$的拆分$a_i$,使得$\sum_{i=1}^ma_i=n$,$\prod_{i=1}^mf_{a_i}$之和.其中$f_i$为斐波那契数列的第$i$项. 数 ...
- [国家集训队]整数的lqp拆分
我们的目标是求$\sum\prod_{i=1}^m F_{a_i}$ 设$f(i) = \sum\prod_{j=1}^i F_{a_j}$那么$f(i - 1) = \sum\prod_{j=1}^ ...
- [国家集训队]整数的lqp拆分 数学推导 打表找规律
题解: 考场上靠打表找规律切的题,不过严谨的数学推导才是本题精妙所在:求:$\sum\prod_{i=1}^{m}F_{a{i}}$ 设 $f(i)$ 为 $N=i$ 时的答案,$F_{i}$ 为斐波 ...
- [BZOJ2173]整数的lqp拆分
[题目描述] lqp在为出题而烦恼,他完全没有头绪,好烦啊… 他首先想到了整数拆分.整数拆分是个很有趣的问题.给你一个正整数N,对于N的一个整数拆分就是满足任意m>0,a1 ,a2 ,a3…am ...
随机推荐
- chcon命令详解
导读 chcon命令是修改对象(文件)的安全上下文,比如:用户.角色.类型.安全级别.也就是将每个文件的安全环境变更至指定环境.使用--reference选项时,把指定文件的安全环境设置为与参考文件相 ...
- asp.net MVC 的路由匹配
- C++11 weak_ptr智能指针
和 shared_ptr.unique_ptr 类型指针一样,weak_ptr 智能指针也是以模板类的方式实现的.weak_ptr<T>( T 为指针所指数据的类型)定义在<memo ...
- UWP - 介绍App Service 与新功能
App Service 是一种背景工作运行的服务,提供给其他Apps 使用就像Web Service.它本身无使用介面(UI-less),允许Apps 在同一个设备被引用,甚至Windows 10 1 ...
- 【springcloud】API Gateway 的路由和过滤(Zuul--1)
转自:https://blog.csdn.net/pengjunlee/article/details/87084646 Zuul是什么? API Gateway 是随着微服务(Microservic ...
- 同步(synchronized)
转载至:https://www.cnblogs.com/dolphin0520/p/3923737.html 一.什么时候会出现线程安全问题? 在单线程中不会出现线程安全问题,而在多线程编程中,有可能 ...
- Java之Apache Commons-IO使用精讲
Commons IO是针对开发IO流功能的工具类库.主要包括六个区域: 工具类--使用静态方法执行共同任务输入--用于InputStream和Reader实现输出--用于OutputStream和Wr ...
- MySql 文件导入导出
1.将表输出到文件 select * FROM zhilianzhaopin4 INTO OUTFILE 'G:/test.csv' --------输出位置 fields terminat ...
- Java 大数加法HdAcm1002
1 import java.util.Scanner; 2 3 4 public class Main { 5 public static void main(String[] args) { 6 S ...
- OVN架构
原文地址 OVN架构 1.简介 OVN,即Open Virtual Network,是一个支持虚拟网络抽象的系统. OVN补充了OVS的现有功能,增加了对虚拟网络抽象的原生(native)支持,比如虚 ...