题意:给出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. Mybatis 单表 常用增删改查

    1.编写sql表,插入原始数据 -- 删除表 DROP TABLE testA; -- 创建表 CREATE TABLE testA( id INT AUTO_INCREMENT PRIMARY KE ...

  2. Ubunton

    Ubunton 装完机后 root账户进不去 没密码 在自己账号下 sudo passwd 输入两次密码就是root的密码 之后就可以su root 密码进入了 外部客户端sftp方式连接: sudo ...

  3. SpringBoot---注册Servlet,Filter,Listener

    1.概述 1.1.当使用  内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener  注册到Servlet容器的方法: 1.1.1.直接注册Bean ...

  4. python学习笔记(四)字符串及字符串操作

    字符串 字符串可以存任意类型的字符串,比如名字,一句话等等. 字符串还有很多内置方法,对字符串进行操作,常用的方法如下: name1='hello world' print(name.capitali ...

  5. JS中数据结构之散列表

    散列是一种常用的数据存储技术,散列后的数据可以快速地插入或取用.散列使用的数据 结构叫做散列表.在散列表上插入.删除和取用数据都非常快. 下面的散列表是基于数组进行设计的,数组的长度是预先设定的,如有 ...

  6. 跨域共享cookie

    1. JSP中Cookie的读写 Cookie的本质是一个键值对,当浏览器访问web服务器的时候写入在客户端机器上,里面记录一些信息.Cookie还有一些附加信息,比如域名.有效时间.注释等等. 下面 ...

  7. PWN入门的入门——工具安装

    安装pwntool: 命令行运行: pip install pwntools python import pwn pwn.asm("xor eax,eax") 出现'1\xc0'  ...

  8. RHEL/CentOS通用性能优化、安全配置参考

    RHEL/CentOS通用性能优化.安全配置参考 本文的配置参数是笔者在实际生产环境中反复实践总结的结果,完全适用绝大多数通用的高负载.安全性要求的网络服务器环境.故可以放心使用. 若有异议,欢迎联系 ...

  9. [CSP-S模拟测试]:Tourist Attractions(简单图论+bitset)

    题目描述 在美丽的比特镇一共有$n$个景区,编号依次为$1$到$n$,它们之间通过若干条双向道路连接.$Byteasar$慕名来到了比特镇旅游,不过由于昂贵的门票费,他只能负担起$4$个景区的门票费. ...

  10. I2C总线协议详解

    I2C总线定义     I2C(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C总线产生于在80年代,最初为音 ...