BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- //using namespace std;
- const int maxn=;
- const double eps=1e-;
- long long modn;
- long long n,l,r;
- long long b[]={};
- struct mat{
- long long e[][];
- mat(){ memset(e,,sizeof(e)); }
- };
- mat a;
- mat Mul(mat x,mat y){
- mat z;
- for(int i=;i<=n+;i++){
- for(int j=;j<=n+;j++){
- for(int k=;k<=n+;k++){
- z.e[i][j]+=x.e[i][k]*y.e[k][j];
- z.e[i][j]%=modn;
- }
- }
- }
- return z;
- }
- mat Pow(mat x,long long k){
- mat z;
- for(int i=;i<=n+;i++){
- z.e[i][i]=;
- }
- while(k>){
- if(k&){
- z=Mul(z,x);
- }
- x=Mul(x,x);
- k/=;
- }/*for(int i=1;i<=n;i++){
- for(int j=1;j<=n;j++){
- std::cout<<z.e[i][j]<<' ';
- }
- std::cout<<std::endl;
- }*/
- return z;
- }
- long long doit(long long x){
- if(x<n){
- return b[x+];
- }
- mat z=Pow(a,x-n+);
- long long ans=,s=,d=;
- for(int i=;i<=n+;i++){
- d+=z.e[n][i]*b[i];
- s+=z.e[n+][i]*b[i];
- d%=modn;s%=modn;
- }
- ans=(s+d)%modn;
- ans%=modn;
- return ans;
- }
- int main(){
- scanf("%lld",&n);
- n+=;
- for(int i=;i<=n;i++){
- scanf("%lld",&b[i]);
- b[n+]+=b[i];
- }
- b[n+]-=b[n];
- for(int i=n;i>;i--){
- scanf("%lld",&a.e[n][i]);
- }
- long long l,r;
- scanf("%lld%lld%lld",&l,&r,&modn);
- for(int i=;i<=n;i++){
- b[i]%=modn;
- a.e[i-][i]=;a.e[n][i]%=modn;
- }
- a.e[n+][n+]=,a.e[n+][n]=;
- /*for(int i=1;i<=n+1;i++){
- for(int j=1;j<=n+1;j++){
- std::cout<<a.e[i][j]<<' ';
- }
- std::cout<<std::endl;
- }*/
- long long ans=(doit(r)-doit(l-)+modn)%modn;
- printf("%lld\n",ans);
- return ;
- }
BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂的更多相关文章
- BZOJ 3231: [Sdoi2008]递归数列( 矩阵快速幂 )
矩阵乘法裸题..差分一下然后用矩阵乘法+快速幂就可以了. ----------------------------------------------------------------------- ...
- bzoj 3231 [Sdoi2008]递归数列——矩阵乘法
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3231 矩阵乘法裸题. 1018是10^18.别忘了开long long. #include& ...
- bzoj 3231: [Sdoi2008]递归数列【矩阵乘法】
今天真是莫名石乐志 一眼矩阵乘法,但是这个矩阵的建立还是挺有意思的,就是把sum再开一列,建成大概这样 然后记!得!开!long!long!! #include<iostream> #in ...
- nyoj_148_fibonacci数列(二)_矩阵快速幂
fibonacci数列(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 In the Fibonacci integer sequence, F0 = 0, F ...
- fibonacci数列(二)_矩阵快速幂
描述 In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn = Fn − 1 + Fn − 2 for n ≥ 2. For exampl ...
- POJ3070 斐波那契数列递推 矩阵快速幂模板题
题目分析: 对于给出的n,求出斐波那契数列第n项的最后4为数,当n很大的时候,普通的递推会超时,这里介绍用矩阵快速幂解决当递推次数很大时的结果,这里矩阵已经给出,直接计算即可 #include< ...
- bzoj5118 Fib数列2 二次剩余+矩阵快速幂
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5118 题解 这个题一看就是不可做的样子. 求斐波那契数列的第 \(n\) 项,\(n \leq ...
- Tribonacci UVA - 12470 (简单的斐波拉契数列)(矩阵快速幂)
题意:a1=0;a2=1;a3=2; a(n)=a(n-1)+a(n-2)+a(n-3); 求a(n) 思路:矩阵快速幂 #include<cstdio> #include<cst ...
- BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)
题目链接 先考虑 假设S确定,使构造S操作次数最小的方案应是:对T建SAM,S在SAM上匹配,如果有S的转移就转移,否则操作数++,回到根节点继续匹配S.即每次操作一定是一次极大匹配. 简单证明:假设 ...
随机推荐
- HDU 1711 Number Sequence (字符串处理 KMP)
题目链接 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b[2], ...
- python 天气爬虫
python3 爬取全国天气信息 制作一个天气查询软件,能够查询全国范围内的天气数据. github:https://github.com/1052687889/weatherApp 基于PyQt5编 ...
- Tensorflow中使用TFRecords高效读取数据--结合Attention-over-Attention Neural Network for Reading Comprehension
原文链接:https://arxiv.org/pdf/1607.04423.pdf 本片论文主要讲了Attention Model在完形填空类的阅读理解上的应用. 转载:https://blog.cs ...
- linux和windows共享文件,通过samba
SAMBA共享1.安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没有的话自己安装下,这里介绍下基于RPM包的一种在线安装模式yumyum是一种快速安装模式,它会自 ...
- linux用户修改用户shell
要拒绝系统用户登录,可以将其shell设置为/usr/sbin/nologin或者/bin/false # usermod -s /usr/sbin/nologin username 或者 # use ...
- springMVC中ajax的实现
function addDebtResult(){ var repayIds=$("#repayIds").val(); var lateFeeDay=$("#repay ...
- Groovy 与 DSL
一:DSL 概念 指的是用于一个特定领域的语言(功能领域.业务领域).在这个给出的概念中有 3个重点: 只用于一个特定领域,而非所有通用领域,比如 Java / C++就是用于通用领域,而不可被称为 ...
- (MHA+MYSQL-5.7增强半同步)高可用架构设计与实现
架构使用mysql5.7版本基于GTD增强半同步并行复制配置 reploication 一主两从,使用MHA套件管理整个复制架构,实现故障自动切换高可用 优势: ...
- LeetCode312. Burst Balloons
Given n balloons, indexed from 0 to n-1. Each balloon is painted with a number on it represented by ...
- hdu 5914(斐波拉契数列)
Triangle Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Su ...