Solution -「国家集训队」「洛谷 P4451」整数的 lqp 拆分
\(\mathcal{Description}\)
Link.
求
\]
其中 \(f_i\) 为 Fibonacci 数列第 \(i\) 项(\(f_0=0,f_1=1\)),答案对 \(10^9+7\) 取模。
\(n\le10^{10^4}\)。
\(\mathcal{Solution}\)
记 \(F(x)\) 为 \(\{f\}\) 的 OGF,首先来推导 \(F(x)\)。根据定义 \(f_{n+2}=f_{n+1}+f_n\),可以发现经过适当位移,\(F(x)\) 能推出其自身而解出表达式。具体地:
&~~~~~~~~~~~xF(x)+F(x)=\frac{1}xF(x)-1\\
&\Rightarrow~~~~(x+1-\frac{1}x)F(x)=-1\\
&\Rightarrow~~~~F(x)=\frac{x}{1-x-x^2}
\end{aligned}
\]
令 \(n\) 的答案为 \(g_n\),\(g_0=1\)。简单 DP 得出递推式:
\]
显然的卷积关系。令 \(\{g\}\) 的 OGF 为 \(G(x)\),则:
G(x)&=1+G(x)F(x)\\
&=\frac{1}{1-F(x)}\\
&=\frac{1-x-x^2}{1-2x-x^2}
\end{aligned}
\]
提出一些常数:
\]
我们想求 \(g_n\),即 \([x^n]G(x)\),就得把上式最后一项分式结构配凑成等比数列求和的形式。首先暴力因式分解 \(x^2+2x-1\),用求根公式求出其两根:
\]
所以 \(x^2+2x-1=(x-x_1)(x-x_2)\)。代入 \(G(x)\) 的表达式:
G(x)&=1-\frac{x}{(x-x_1)(x-x_2)}\\
&=1-\frac{x}{x_1-x_2}\left(\frac{1}{x-x_1}-\frac{1}{x-x_2} \right)\\
&=1-\frac{x}{x_1-x_2}\left(\frac{1}{x_2}\sum_{i=0}^{+\infty}\frac{x^i}{x_2^i}-\frac{1}{x_1}\sum_{i=0}^{+\infty}\frac{x^i}{x_1^i} \right)\\
&=1-\frac{1}{x_1-x_2}\sum_{i=1}^{+\infty}(x_2^{-i}-x_1^{-i})x^i
\end{aligned}
\]
拆得清清楚楚啦,答案:
\]
代入 \(x_{1,2}\):
\]
最后 \(\sqrt2\equiv 59713600\equiv 940286407\pmod{10^9+7}\),所以可以 \(\mathcal O(\log p+\log n)\)(\(p\) 是素模数)直接算出来。
\(\mathcal{Code}\)
/* Clearink */
#include <cstdio>
const int INV4 = 250000002, S2 = 59713600, MOD = 1e9 + 7;
inline int rmod () {
int x = 0; char s = getchar ();
for ( ; s < '0' || '9' < s; s = getchar () );
for ( ; '0' <= s && s <= '9'; s = getchar () ) {
x = ( x * 10ll + ( s ^ '0' ) ) % ( MOD - 1 );
}
return x;
}
inline int mul ( const long long a, const int b ) { return a * b % MOD; }
inline int sub ( int a, const int b ) { return ( a -= b ) < 0 ? a + MOD : a; }
inline int add ( int a, const int b ) { return ( a += b ) < MOD ? a : a - MOD; }
inline int mpow ( int a, int b ) {
int ret = 1;
for ( ; b; a = mul ( a, a ), b >>= 1 ) ret = mul ( ret, b & 1 ? a : 1 );
return ret;
}
int main () {
int n = rmod ();
printf ( "%d\n", sub ( 0, mul ( mul ( S2, INV4 ),
sub ( mpow ( sub ( 1, S2 ), n ), mpow ( add ( 1, S2 ), n ) ) ) ) );
return 0;
}
Solution -「国家集训队」「洛谷 P4451」整数的 lqp 拆分的更多相关文章
- P4827「国家集训队」 Crash 的文明世界
「国家集训队」 Crash 的文明世界 提供一种不需要脑子的方法. 其实是看洛谷讨论版看出来的( (但是全网也就这一篇这个方法的题解了) 首先这是一个关于树上路径的问题,我们可以无脑上点分治. 考虑当 ...
- 「国家集训队」middle
「国家集训队」middle 传送门 按照中位数题的套路,二分答案 \(mid\),序列中 \(\ge mid\) 记为 \(1\),\(< mid\) 的记为 \(-1\) 然后只要存在一个区间 ...
- 「国家集训队」小Z的袜子
「国家集训队」小Z的袜子 传送门 莫队板子题. 注意计算答案的时候,由于分子分母都要除以2,所以可以直接约掉,这样在开桶算的时候也方便一些. 参考代码: #include <algorithm& ...
- 「区间DP」「洛谷P1043」数字游戏
「洛谷P1043」数字游戏 日后再写 代码 /*#!/bin/sh dir=$GEDIT_CURRENT_DOCUMENT_DIR name=$GEDIT_CURRENT_DOCUMENT_NAME ...
- 「洛谷1903」「BZOJ2120」「国家集训队」数颜色【带修莫队,树套树】
题目链接 [BZOJ传送门] [洛谷传送门] 题目大意 单点修改,区间查询有多少种数字. 解法1--树套树 可以直接暴力树套树,我比较懒,不想写. 稍微口胡一下,可以直接来一个树状数组套主席树,也就是 ...
- Solution -「JSOI 2019」「洛谷 P5334」节日庆典
\(\mathscr{Description}\) Link. 给定字符串 \(S\),求 \(S\) 的每个前缀的最小表示法起始下标(若有多个,取最小的). \(|S|\le3\time ...
- Solution -「洛谷 P4372」Out of Sorts P
\(\mathcal{Description}\) OurOJ & 洛谷 P4372(几乎一致) 设计一个排序算法,设现在对 \(\{a_n\}\) 中 \([l,r]\) 内的元素排 ...
- Solution -「POI 2010」「洛谷 P3511」MOS-Bridges
\(\mathcal{Description}\) Link.(洛谷上这翻译真的一言难尽呐. 给定一个 \(n\) 个点 \(m\) 条边的无向图,一条边 \((u,v,a,b)\) 表示从 ...
- Solution -「APIO 2016」「洛谷 P3643」划艇
\(\mathcal{Description}\) Link & 双倍经验. 给定 \(n\) 个区间 \([a_i,b_i)\)(注意原题是闭区间,这里只为方便后文描述),求 \(\ ...
随机推荐
- js 对 date 和 字符串 类型的正确互换【各浏览器兼容】,解决invalid Date
1.前言 有个需求,想要把指定日期时间的字符串转换成date类型 pc浏览器正常转换,但手机浏览器 返回结果是 invalid Date [无效的日期] 2.原因 出现这样不兼容的原因其实很简单, p ...
- Python常用功能函数系列总结(三)
本节目录 常用函数一:词频统计 常用函数二:word2vec 常用函数三:doc2vec 常用函数四:LDA主题分析 常用函数一:词频统计 # -*- coding: utf-8 -*- " ...
- vue3.0+vue-cli3.0项目搭建
因为需要兼容其他vue2.0的项目,所以先卸载vue-cli,再全局安装桥接工具 卸载vue-cli2.0 npm uninstall vue-cli -g 安装vue-cli3.0 npm inst ...
- asp.net core 中优雅的进行响应包装
目录 摘要 正常响应/模型验证错误包装 实现按需禁用包装 如何让 Swagger 识别正确的响应包装 禁用默认的模型验证错误包装 使用方法以及自定义返回结构体 SourceCode && ...
- 利用代码生成工具Database2Sharp生成ABP VNext框架项目代码
我们在做某件事情的时候,一般需要详细了解它的特点,以及内在的逻辑关系,一旦我们详细了解了整个事物后,就可以通过一些辅助手段来提高我们的做事情的效率了.本篇随笔介绍ABP VNext框架各分层项目的规则 ...
- docker 环境安装 jenkins
下载镜像运行 jenkins 默认服务器已经安装好了 docker 环境: 拉取 jenkins 镜像 docker pull jenkins/jenkins:lts 镜像的详细信息可以查看:http ...
- Flowable实战(四)BPMN2.0 启动与结束事件
一.BPMN2.0 BPMN2.0规范是一个标准,开源框架和不同供应商都遵循这份标准,使得最终用户不会因为依赖专有解决方案,而被供应商"绑架".有了BPMN2.0标准,不同解决 ...
- Maven Archetype 多 Module 自定义代码脚手架
大部分公司都会有一个通用的模板项目,帮助你快速创建一个项目.通常,这个项目需要集成一些公司内部的中间件.单元测试.标准的代码格式.通用的代码分层等等. 今天,就利用 Maven 的 Archetype ...
- 学习javaScript必知必会(6)~类、类的定义、prototype 原型、json对象
一.定义类:使用的是funciton,因为在js中没有定义类的class语句,只有function. ■ 举例: //定义一个Person类(通过类的无参构造函数定义类) function Perso ...
- k8s中kubeconfig的配置及使用
1.概述 kubeconfig文件保存了k8s集群的集群.用户.命名空间.认证的信息.kubectl命令使用kubeconfig文件来获取集群的信息,然后和API server进行通讯. 注意:用于配 ...