题意

求 $\displaystyle \sum_{i=1}^n F_i^m $,($1 \leq n\leq 10^9,1 \leq  m\leq 10^3$),答案对 $10^9$ 取模。

分析

显然,斐波那契数列在模意义下是有循环节的。

模 $10^9$ 本身的循环节为 $150000000$,还是很大,没意义。

设答案为求和的结果为 $ans$,根据中国剩余定理,要求 $ans \% p$,可先求 $ans \% p_1$ 和 $ans \% p_2$(其中 $p_1p_2 = p$,且 $p_1,p_2$ 互素),然后再合并回去。

设斐波那契数列模 $p$ 时的循环节长度为 $loop(p)$,$10^9 = 2^9 \cdot 5^9$,易知 $loop(512)=768$,$loop(1953125)=7812500$。

模数只拆成了两部分,甚至不用上中国剩余定理的模板。

#include<bits/stdc++.h>
using namespace std; typedef long long ll;
const ll p = 1e9;
const ll p1 = , loop1 = , inv_p1 = ;
const ll p2 = , loop2 = , inv_p2 = ;
ll n, m; ll qpow(ll a, ll b, ll p)
{
ll ret = ;
while(b)
{
if(b&) ret = ret * a % p;
a = a * a % p;
b >>= ;
}
return ret;
} ll fi(ll n, ll m, ll loop, ll p)
{
if(n == ) return ;
if(n == ) return ;
ll yu = n % loop;
ll ret = , tmp = ;
if(yu == ) tmp=;
if(yu == ) tmp=;
ll a=, b=, c;
for(int i = ;i <= loop;i++)
{
c = (a+b) % p;
a = b;
b = c;
ret = (ret + qpow(c, m, p)) % p;
if(i == yu) tmp = ret;
}
return (ret * (n / loop) % p + tmp) % p;
} int main()
{
scanf("%lld%lld", &n, &m);
ll ans1 = fi(n, m, loop1, p1);
ll ans2 = fi(n, m, loop2, p2);
ll ans = (ans1 * p2 %p * inv_p2 %p + ans2 * p1 % p * inv_p1 %p) % p;
printf("%lld\n", ans);
}

参考链接:https://blog.csdn.net/ACdreamers/article/details/10983813

2019牛客暑期多校训练营(第九场)The power of Fibonacci——循环节&&CRT的更多相关文章

  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. ROS初探--意义、基本模块

    顾虑就使我们都变成了懦夫,使得那果断的本色蒙上了一层思虑的惨白的容颜,本来可以做出伟大的事业,由于思虑就化为乌有了,丧失了行动的能力.-----哈姆雷特 ROS: Robot Operating Sy ...

  2. LeetCode 278. 第一个错误的版本(First Bad Version)

    278. 第一个错误的版本 LeetCode278. First Bad Version 题目描述 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每 ...

  3. git config 介绍

    转载. https://blog.csdn.net/liuxiao723846/article/details/83113317 Git的三个重要配置文件分别是/etc/gitconfig,${HOM ...

  4. PAT甲级题分类汇编——线性

    本文为PAT甲级分类汇编系列文章. 线性类,指线性时间复杂度可以完成的题.在1051到1100中,有7道: 题号 标题 分数 大意 时间 1054 The Dominant Color 20 寻找出现 ...

  5. unittest之makeSuite\testload\discover及测试报告teseReport

    转载:http://www.cnblogs.com/sunny0/p/7771089.html 测试套件suite除了使用addTest以外,还有使用操作起来更更简便的makeSuite\testlo ...

  6. Windows10无法远程连接

    1.在桌面计算机上,选择右键->属性.左侧任务列表中选择远程设置(如果桌面没有计算机图标,按键盘+R 输入 control system) 钩上允许 远程连接到此计算机 正常情况下,这样就可以在 ...

  7. linux环境,hidraw设备自动加载时默认权限的设置方法

    在linux系统中,hidraw设备会自动加载并设置默认权限,但系统的默认只允许root用户访问,普通用户是不允许读写. 设置的方法是修改udev的配置,配置路径是/etc/udev/rules.d/ ...

  8. Python 练习汇总

    1. Python练习_Python初识_day1 2. Python练习_Python初识_day2 3. Python练习_初识数据类型_day3 4. Python练习_数据类型_day4 5. ...

  9. Python基本数据类型及实例详解

    Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对 ...

  10. springboot mvc自动配置(目录)

    对于长时间基于spring框架做web开发的我们,springmvc几乎成为了开发普通web项目的标配.本系列文章基于快速启动的springboot,将从源码角度一点点了解springboot中mvc ...