【杭电多校2020】Fibonacci Sum【斐波拉契通项】【推式子】

题意:设FiF_iFi为斐波拉契数列,求

∑i=0N(FiC)k\sum_{i=0}^N(F_{iC})^ki=0N(FiC)k

109+910^9+9109+9

N,C≤1018,k≤105N,C\leq10^{18},k\leq10^5N,C1018,k105

把斐波拉契暴力拆开

FiC=15[(1+52)iC−(1−52)iC]F_{iC}=\frac 1 {\sqrt{5}}[(\frac {1+\sqrt{5}}2)^{iC}-(\frac {1-\sqrt{5}}2)^{iC}]FiC=51[(21+5)iC(215)iC]

为了方便,忽略常数写成

Fic=Ai−BiF_{ic}=A^i-B^iFic=AiBi

所以

ans=∑i=0N(Ai−Bi)kans=\sum_{i=0}^N(A^i-B^i)^kans=i=0N(AiBi)k

=∑i=0N∑j=0k(kj)(−1)jA(k−j)iBj=\sum_{i=0}^N\sum_{j=0}^k\binom kj(-1)^jA^{(k-j)i}B^j=i=0Nj=0k(jk)(1)jA(kj)iBj

=∑i=0k(−1)i(kj)∑j=0N(Ak−jBj)i=\sum_{i=0}^k(-1)^i\binom kj\sum_{j=0}^N(A^{k-j}B^j)^i=i=0k(1)i(jk)j=0N(AkjBj)i

等比数列求和即可

复杂度O(nlog⁡M)O(n\log M)O(nlogM)

推式子先从简单的入手

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cctype>
using namespace std;
#define MAXN 100005
typedef long long ll;
const int MOD=1e9+9,N=1e5,p=383008016,A=(p+1ll)*(MOD+1)/2%MOD,B=(1ll+MOD-p)*(MOD+1)/2%MOD;
inline int qpow(int a,int p)
{int ans=1;while (p){if (p&1) ans=(ll)ans*a%MOD;a=(ll)a*a%MOD;p>>=1;}return ans;
}
int fac[MAXN],finv[MAXN],px[MAXN],py[MAXN];
int main()
{fac[0]=1;for (int i=1;i<=N;i++) fac[i]=(ll)fac[i-1]*i%MOD;finv[N]=qpow(fac[N],MOD-2);for (int i=N-1;i>=0;i--) finv[i]=(ll)finv[i+1]*(i+1)%MOD;int T;scanf("%d",&T);while (T--){ll n,c;int k;scanf("%lld%lld%d",&n,&c,&k);c%=MOD-1;int ans=0;int x=qpow(A,c),y=qpow(B,c);px[0]=py[0]=1;for (int i=1;i<=k;i++) px[i]=(ll)px[i-1]*x%MOD,py[i]=(ll)py[i-1]*y%MOD;for (int i=0;i<=k;i++) {int t=((i&1)? MOD-1ll:1ll)*fac[k]%MOD*finv[i]%MOD*finv[k-i]%MOD;int a=(ll)px[k-i]*py[i]%MOD;if (a==1) ans=(ans+(n+1ll)%MOD*t)%MOD;else ans=(ans+t*(qpow(a,(n+1ll)%(MOD-1))-1ll)%MOD*qpow(a-1,MOD-2))%MOD;}ans=(ll)ans*qpow(p,MOD-1-k)%MOD;printf("%d\n",ans);}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/314974.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 完全想不到容斥啊&#xff0c;看了半天也没看懂渍渍渍。 定义f[i]f[i]f[i]表示iii的超集个数&#xff0c;那么选择的方案就是2f[i]−12^{f[i]}-12f[i]−1了&#xff0c;因为不能一个不选所…

花5分钟时间来了解一下高性能网关Kong会有意外收获

前言前几天开源发布了 Kong.Net 项目&#xff0c;收到了大量园友的反馈&#xff0c;开源当天就突破了 100 个star &#xff0c;可喜可贺&#xff0c;但是从侧面也说明&#xff0c;我们 .NetCore 阵营真的非常需要拥抱开源&#xff0c;应该敞开心扉&#xff0c;集众家之长&#…

【杭电多校2020】Total Eclipse【贪心】【并查集】

题意&#xff1a;nnn个点mmm条边的无向图&#xff0c;每个点有一个正点权&#xff0c;每次选择一个连通子图&#xff0c;将里面的权值都减111。求所有点权为000的最小步数。 T≤10,n≤105,m≤2105T\leq 10,n\leq 10^5,m\leq2\times10^5T≤10,n≤105,m≤2105 考虑一个贪心&…

Codeforces Round #725 (Div. 3) G. Gift Set 二分

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 有两种物品分别有x,yx,yx,y个&#xff0c;每次可以从一个拿出aaa个&#xff0c;另一个拿出bbb个分成一组&#xff0c;问最多能分成多少组。 思路&#xff1a; 这个题有一个显然的单调性&#xff0c;所以二…

长沙.NET技术社区·设计到实现

方案最终夭折回到一年前的四月初&#xff0c;也是这样一个气象更新&#xff0c;春意盎然的一年中最好的时光。 在长沙.NET技术圈中&#xff0c;有一个不知名的QQ群&#xff0c;叫做放肆.NET技术交流群&#xff08;群号&#xff1a;44329330&#xff09;&#xff0c;在这个群里面…

【杭电多校2020】Lead of Wisdom【搜索】【复杂度证明】

题意&#xff1a;nnn件物品&#xff0c;每种物品有一个种类tit_iti​&#xff0c;四个属性ai,bi,ci,dia_i,b_i,c_i,d_iai​,bi​,ci​,di​&#xff0c;每个种类最多选一件物品&#xff0c;求 (100∑ai)(100∑bi)(100∑ci)(100∑di)(100\sum a_i)(100\sum b_i)(100\sum c_i)(10…

Loj #6274. 数字 数位dp + 去重

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 考虑数位dpdpdp&#xff0c;设计状态f[pos][flag1][flag2][flag3][flag4]f[pos][flag1][flag2][flag3][flag4]f[pos][flag1][flag2][flag3][flag4]&#xff0c;其中flag1:x≥Lxflag2:y≤Rx…

微软发布 VS Code 容器化开发工具,大大简化物联网设备开发

近日&#xff08;北京时间 2019 年 7 月 9 日&#xff09;&#xff0c;微软宣布了 Azure IoT Tools for VS Code 的全新功能&#xff1a;通过在容器中封装编译器、设备 SDK 以及基本库&#xff0c;大大简化了设备交叉编译的工作量&#xff0c;使得嵌入式 Linux 设备&#xff08…

【杭电多校2020】Go Running【几何】【最小点覆盖】

题意&#xff1a;有一个数轴&#xff0c;若干人在某个时刻开始从某个点朝某个方向按111的速度走若干时间。已知nnn个条件&#xff0c;形如tit_iti​时刻xix_ixi​的位置有人&#xff0c;求最少可能的人数。 ∑n≤5105\sum n\leq 5\times 10^5∑n≤5105 画出 x−tx-tx−t二维平…

Codeforces Round #636 (Div. 3) F. Restore the Permutation by Sorted Segments 思维 + 暴力

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; n≤200n\le200n≤200 思路&#xff1a; 首先关注到rrr从[2,n][2,n][2,n]都出现一次&#xff0c;所以很明显最后一个位置只出现一次&#xff0c;但是这样倒着来不是很好做考虑正着来。 我们可以枚举111位置填…

.NET中生成动态验证码

NET中生成动态验证码验证码是图片上写上几个字&#xff0c;然后对这几个字做特殊处理&#xff0c;如扭曲、旋转、修改文字位置&#xff0c;然后加入一些线条&#xff0c;或加入一些特殊效果&#xff0c;使这些在人类能正常识别的同时&#xff0c;机器却很难识别出来&#xff0c…

【NOI2019】弹跳【二维线段树】【dijkstra】

题意&#xff1a;一个whw\times hwh的二维平面上有nnn个城市&#xff0c;有mmm个弹跳装置&#xff0c;第iii个可以花费tit_iti​的时间从城市pip_ipi​跳到矩形x∈[l,r],y∈[u,d]x\in [l,r],y\in[u,d]x∈[l,r],y∈[u,d]中的任意一个城市。求从111到其他每个城市的最小时间。 w,…

Codeforces Beta Round #51 D. Beautiful numbers 数位dp + 状态优化

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 数位dpdpdp挺经典的一个题辣&#xff0c;有一个很明显的状态就是f[pos][num][lcm]f[pos][num][lcm]f[pos][num][lcm]表示到了第pospospos位&#xff0c;数是numnumnum&#xff0c;个位数最…

在C#中使用Irony实现SQL语句的解析

在上一篇博文 LogoSharp&#xff1a;Logo语言的C#实现中&#xff0c;我介绍了LOGO语言的C#实现&#xff0c;在该项目中&#xff0c;我使用了.NET下的语法解析框架&#xff1a;Irony。Irony框架最开始的时候是由Roman Ivantsov发布在codeplex上的一个开源项目&#xff0c;它使用…

【CF1045A】A Last chance【贪心】【线段树优化建图】【网络流构造方案】

题意&#xff1a;有nnn个武器和mmm个飞船&#xff0c;武器有下面三种 从给定的集合SSS中击破一个。在给定的区间[L,R][L,R][L,R]中击破一个。对于给定的a,b,ca,b,ca,b,c&#xff0c;选择000个或222个击破。特殊地&#xff0c;每个飞船最多被该操作的a,b,ca,b,ca,b,c指定一次。…

P4127 [AHOI2009]同类分布 数位dp + 对状态剪枝

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 思路&#xff1a; 比较套路的题&#xff0c;首先也有个明显的状态f[pos][num][sum]f[pos][num][sum]f[pos][num][sum]表示到了pospospos位&#xff0c;当前数为numnumnum&#xff0c;各位数字之和为sumsumsu…

.NET开发框架(六)-架构设计之IIS负载均衡(视频)

前面有关注我们公众号文章的朋友应该都知道&#xff0c;我们的分布式应用服务可以通过Ocelot网关进行负载均衡&#xff0c;这种方式属于应用级别的实现。而今天我们给大家介绍的是平台级别的实现&#xff0c;并且我们首次使用视频方式进行讲解。本文通过视频方式为大家演示&…

【NOI2019】斗主地【期望】【组合数学】【下降幂】【插值】

题意&#xff1a; 有nnn张牌&#xff0c;从上往下的第iii张牌权值是f(i)itypef(i)i^{type}f(i)itype。 进行mmm次洗牌操作&#xff0c;每次操作给定aia_iai​&#xff0c;将从上往下的前aia_iai​张牌分成一堆&#xff0c;后面bib_ibi​张牌分成第二堆。如果两堆的牌数分别为…

架构杂谈《二》

服务化到微服务1、微服务的产生随着互联网企业的不断发展&#xff0c;海量用户发起的大规模、高并发请求是企业不得不面对的&#xff0c;上一篇 架构杂谈《一》杂谈的SOA服务化系统能够分解任务&#xff0c;让每个服务更简单、职责单一、更易于扩展。但无论是Web Service 还是E…

Good Bye 2017 G. New Year and Original Order 数位dp + 按数贡献

传送门 文章目录题意&#xff1a;思路&#xff1a;题意&#xff1a; 定义S(k)S(k)S(k)为将kkk的每一位拿出来从小到大排序后构成的数&#xff0c;比如S(3421)1234S(3421)1234S(3421)1234&#xff0c;求S(k)1≤k≤nS(k)_{1\le k\le n }S(k)1≤k≤n​。 1≤n≤107001\le n\le 10…