题意:给出n和m,f(n)是斐波那契额数列的第n项,要求计算ans=f(1)^m+f(2)^m+....f(n)^m。即斐波那契额数列前n项的m次幂和。

解法:这题好像有两种解法:一种是循环节+CRT,一种是通项公式,其实这题也可以直接exBM就能AC了。这里我学习的是循环节+CRT的解法https://blog.csdn.net/ftx456789/article/details/99684004。这位博主写得巨好了,我自己总结一下。

大家都知道朴素的斐波那契额数列模一个质数是有循环节的,且这个循环节也比较好找,我们这里猜想其实斐波那契额数列的m次幂和也是要循环节的,但是模数是1e9不是质数很烦。我们把1e9质因数分解

1000000000=29∗59=512∗1953125

而如果模数是512和1953125的话是有循环节的,分别是768和7812500,也就是说我们可以快速计算答案在模512下的解以及答案在模1953125下的解。那么我们可以考虑先求出这两个解分别是a1和a2。那么就要如下同余方程组。

ans≡a1 (mod 512)

ans≡a2 (mod 1953125)

那么最后我们用CRT求出这个ans就可以了。

#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL l1=; //循环节1
const LL l2=; //循环节2
const int P=1e9;
LL f[l2+],sum[l2+];
int n,mi; LL m[],a[]; LL power(LL x,LL p) {
LL ret=;
for (;p;p>>=) {
if (p&) ret=ret*x%P;
x=x*x%P;
}
return ret;
} LL exgcd(LL a,LL b,LL &x,LL &y) {
if (b==) { x=; y=; return a; }
else {
LL tmp=exgcd(b,a%b,y,x);
y-=x*(a/b); return tmp;
}
} long long work() {
LL lcm=m[],X=a[],t,x,y;
for (int i=;i<=;i++) {
LL b=(a[i]-X%m[i]+m[i])%m[i];
LL d=exgcd(lcm,m[i],x,y); //解这个方程出来t的特解x t=(b/d)*x
if (b%d) return -;
t=(b/d)*x%m[i];
X=(X+t*lcm); //那么X(k)=X(k-1)+tm
lcm=lcm*m[i]/d; X=(X%lcm+lcm)%lcm;
}
return X;
} int main()
{
cin>>n>>mi;
f[]=; f[]=;
for (int i=;i<=l2;i++) f[i]=(f[i-]+f[i-])%P;
for (int i=;i<=l2;i++) sum[i]=(sum[i-]+power(f[i],mi))%P; m[]=; m[]=;
a[]=((n/l1)*sum[l1]+sum[n%l1])%P;
a[]=((n/l2)*sum[l2]+sum[n%l2])%P;
cout<<work()<<endl;
return ;
}

1000000000=29∗59=512∗1953125

2019牛客暑期多校训练营(第九场)A.The power of Fibonacci的更多相关文章

  1. 2019牛客暑期多校训练营(第九场) D Knapsack Cryptosystem

    题目 题意: 给你n(最大36)个数,让你从这n个数里面找出来一些数,使这些数的和等于s(题目输入),用到的数输出1,没有用到的数输出0 例如:3  4 2 3 4 输出:0 0 1 题解: 认真想一 ...

  2. 2019牛客暑期多校训练营(第二场) H-Second Large Rectangle(单调栈)

    题意:给出由01组成的矩阵,求求全是1的次大子矩阵. 思路: 单调栈 全是1的最大子矩阵的变形,不能直接把所有的面积存起来然后排序取第二大的,因为次大子矩阵可能在最大子矩阵里面,比如: 1 0 0 1 ...

  3. 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题)

    layout: post title: 2019牛客暑期多校训练营(第五场)G - subsequeue 1 (一题我真的不会的题) author: "luowentaoaa" c ...

  4. 2019牛客暑期多校训练营(第九场)A:Power of Fibonacci(斐波拉契幂次和)

    题意:求Σfi^m%p. zoj上p是1e9+7,牛客是1e9:  对于这两个,分别有不同的做法. 前者利用公式,公式里面有sqrt(5),我们只需要二次剩余求即可.     后者mod=1e9,5才 ...

  5. [状态压缩,折半搜索] 2019牛客暑期多校训练营(第九场)Knapsack Cryptosystem

    链接:https://ac.nowcoder.com/acm/contest/889/D来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言52428 ...

  6. 2019牛客暑期多校训练营(第一场)A题【单调栈】(补题)

    链接:https://ac.nowcoder.com/acm/contest/881/A来源:牛客网 题目描述 Two arrays u and v each with m distinct elem ...

  7. 2019牛客暑期多校训练营(第一场) B Integration (数学)

    链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Integration 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 5242 ...

  8. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  9. 2019牛客暑期多校训练营(第二场)F.Partition problem

    链接:https://ac.nowcoder.com/acm/contest/882/F来源:牛客网 Given 2N people, you need to assign each of them ...

  10. 2019牛客暑期多校训练营(第八场)E.Explorer

    链接:https://ac.nowcoder.com/acm/contest/888/E来源:牛客网 Gromah and LZR have entered the fifth level. Unli ...

随机推荐

  1. canvas 星星闪烁的效果

    代码实例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  2. 您的加密USB驱动器是否安全?黑客又是如何攻破的?

    您如何确定您使用的“安全”USB驱动器是否真的安全,并且您存储的数据无法提取?这正是Google公司和中国网络安全研究人员在最近的2018年黑帽美国大会上以艰难的方式攻击加密的USB密钥”的问题. 研 ...

  3. error和exception的不同与相同

    Exception和Error的区别 两者的“异”&各自的概念: 1.error:error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序处于非正常的.不可恢复状 ...

  4. Jmeter性能测试,使用ServerAgent监控服务端性能指标

    一.jmeter1.下载JMeter Plugins Manager.jar放到你的jmeter\lib\ext目录下2.启动jmeter,进入Plugins Manager找到perfmon安装这个 ...

  5. 分布式消息中间件及RabbitMQ

    分布式应用和集群: 从部署形态来看,它们都是多台机器或者多个进程部署,而且都是为了实现一个业务功能. 如果是一个业务被拆分成多个子业务部署在不同的服务器上,那就是分布式应用 如果是同一个业务部署在多台 ...

  6. FMXUI TEXTVIEW代码设置IMAGEINDEX

    FMXUI作为一个开源的控件,真是DELPHIER的福音,向作者致敬.​TEXTVIEW非常好用,在属性面板中有ImageIndex属性,可以方便设置图标,在实际应用中图标状态需要改变,但在代码设置时 ...

  7. 企业打开云HBase的正确方式,来自阿里云云数据库团队的解读

    一.HBase的历史由来 HBase是一个开源的非关系型分布式数据库(NoSQL),基于谷歌的BigTable建模,是一个高可靠性.高性能.高伸缩的分布式存储系统,使用HBase技术可在廉价PC Se ...

  8. SQL Server 2008性能故障排查(三)——IO

    接着上一章:CPU瓶颈 I/O瓶颈(I/O Bottlenecks): SQLServer的性能严重依赖I/O子系统.除非你的数据库完全加载到物理内存中,否则SQLServer会不断地把数据库文件从缓 ...

  9. php quotemeta()函数 语法

    php quotemeta()函数 语法 作用:在预定义字符前添加反斜杠东莞直线电机 语法:quotemeta(string) 参数: 参数 描述 string 必须,需要处理的字符串 说明:该函数可 ...

  10. Tortoise git账号记住密码

    方法一: 本地git仓库目录下,找到 .git/config ,然后打开增加: [credential] helper = store 这样只有该目录下的git操作不用每次输入用户名和密码,换一个目录 ...