hdu 1588 求f(b) +f(k+b) +f(2k+b) +f((n-1)k +b) 之和 (矩阵快速幂)
g(i)=k*i+b; 0<=i<n
f(0)=0
f(1)=1
f(n)=f(n-1)+f(n-2) (n>=2)
求f(b) +f(k+b) +f(2*k+b) +f((n-1)*k +b) 之和
Sample Input
2 1 4 100  // k b n MOD
2 0 4 100
Sample Output
21
12
矩阵A 相当于
1 1 f(2) f(1)
1 0 f(1) f(0)
| 1 1| ^b | f(b+1) f(b)|
mat^b =|1 0 | = | f(b) f(b-1)|
求f(n) 就是求矩阵A的n次幂 再取第1行第2列的元素
要求的东西可化成 A^b*( I + A^k + (A^k)^2 + .... + (A^k)^(N-1) )
矩阵ans1 = A^b
矩阵B = A^k
矩阵C =
B I
O I
C的n次幂后 再取右上的小矩阵 就是I+B+B^2....+B^(n-1) 赋给ans2
ans1 * ans 再取第1行第2列的元素 就是最终答案
# include <iostream>
# include <cstdio>
# include <cstring>
# include <algorithm>
# include <cmath>
# define LL long long
using namespace std ; LL MOD ; struct Matrix
{
LL mat[][];
}; Matrix mul(Matrix a,Matrix b, int n)
{
Matrix c;
for(int i=;i<n;i++)
for(int j=;j<n;j++)
{
c.mat[i][j]=;
for(int k=;k<n;k++)
{
c.mat[i][j]=(c.mat[i][j] + a.mat[i][k]*b.mat[k][j])%MOD;
}
}
return c;
}
Matrix pow_M(Matrix a,int k , int n)
{
Matrix ans;
memset(ans.mat,,sizeof(ans.mat));
for (int i=;i<n;i++)
ans.mat[i][i]=;
Matrix temp=a;
while(k)
{
if(k&)ans=mul(ans,temp,n);
temp=mul(temp,temp,n);
k>>=;
}
return ans;
} int main ()
{
//freopen("in.txt","r",stdin) ;
Matrix A ;
A.mat[][] = A.mat[][] = A.mat[][] = ;
A.mat[][] = ;
int n , k , b ;
while(cin>>k>>b>>n>>MOD)
{
int i ,j ;
Matrix ans1 , ans2;
ans1 = pow_M(A,b,) ; Matrix B , C ;
B = pow_M(A,k,) ;
memset(C.mat,,sizeof(C.mat));
for (i = ; i < ; i++) //扩展成4 * 4的矩阵C
{
for (j = ; j < ; j++)
{
C.mat[i][j] = B.mat[i][j] ;
}
C.mat[+i][+i] = ;
C.mat[i][+i] = ;
}
ans2 = pow_M(C,n,) ; // 4*4 ans2.mat[][] = ans2.mat[][] ;
ans2.mat[][] = ans2.mat[][] ;
ans2.mat[][] = ans2.mat[][] ;
ans2.mat[][] = ans2.mat[][] ;
ans1 = mul(ans1,ans2,) ; cout<<ans1.mat[][]%MOD<<endl ;
} return ;
}
hdu 1588 求f(b) +f(k+b) +f(2k+b) +f((n-1)k +b) 之和 (矩阵快速幂)的更多相关文章
- hdu 5667 BestCoder Round #80 矩阵快速幂
		
Sequence Accepts: 59 Submissions: 650 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536 ...
 - 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)
		
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...
 - HDU 4549 M斐波那契数列(矩阵快速幂)
		
题目链接:M斐波那契数列 题意:$F[0]=a,F[1]=b,F[n]=F[n-1]*F[n-2]$.给定$a,b,n$,求$F[n]$. 题解:暴力打表后发现$ F[n]=a^{fib(n-1)} ...
 - hdu 5950 Recursive sequence 递推式 矩阵快速幂
		
题目链接 题意 给定\(c_0,c_1,求c_n(c_0,c_1,n\lt 2^{31})\),递推公式为 \[c_i=c_{i-1}+2c_{i-2}+i^4\] 思路 参考 将递推式改写\[\be ...
 - UVA - 10689 Yet another Number Sequence (矩阵快速幂求斐波那契)
		
题意:已知f(0) = a,f(1) = b,f(n) = f(n − 1) + f(n − 2), n > 1,求f(n)的后m位数. 分析:n最大为109,矩阵快速幂求解,复杂度log2(1 ...
 - hdu 1005  Number Sequence(矩阵快速幂,找规律,模版更通用)
		
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
 - hdu 2604 Queuing(动态规划—>矩阵快速幂,更通用的模版)
		
题目 最早不会写,看了网上的分析,然后终于想明白了矩阵是怎么出来的了,哈哈哈哈. 因为边上的项目排列顺序不一样,所以写出来的矩阵形式也可能不一样,但是都是可以的 //愚钝的我不会写这题,然后百度了,照 ...
 - HDU 1005 Number Sequence【斐波那契数列/循环节找规律/矩阵快速幂/求(A * f(n - 1) + B * f(n - 2)) mod 7】
		
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
 - 数学--数论--HDU 2802 F(N) 公式推导或矩阵快速幂
		
Giving the N, can you tell me the answer of F(N)? Input Each test case contains a single integer N(1 ...
 - hdu 1575 求一个矩阵的k次幂 再求迹  (矩阵快速幂模板题)
		
Problem DescriptionA为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据.每组数据的第一行有 ...
 
随机推荐
- Dubbo协议
			
参考dubbo官方文档http://dubbo.apache.org/zh-cn/docs/user/references/protocol/dubbo.html dubbo共支持如下几种通信协议: ...
 - HTML5 元素拖拽实现 及 jquery.event.drag插件
			
如上图片: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...
 - APR欺骗
			
ARP欺骗简介 ARP欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听.篡改.重放.钓鱼等攻 ...
 - 时间轴QTimeLine
			
一个动画由多张静态图片组成,每一张静态图片为一帧.每隔一定时间显示一帧,如果时间间隔非常短的话,那这些静态图片就会构成一个连续影像,动画由此而来.QTimeLine提供了用于控制动画的时间轴,它在实现 ...
 - Linux之Ubuntu无线网络配置
			
无线网络使用问题: 0.插上有线网络电线与电脑NIC上. 1.set->系统设置->软件和更新->Ubuntu软件->下载自: 选择一个网络服务器地址(软件源)[http: ...
 - [C++]埃拉托色尼算法
			
/* 埃拉托色尼算法 问题描述:定义一个正整数n,求0-n范围以内的所有质数 @date 2017-03-06 @author Johnny Zen */ #include<iost ...
 - SpringMVC——SpringMVC简介
			
Spring web mvc 和Struts2 都属于表现层的框架,它是Spring 框架的一部分,我们可以从Spring 的整体结构中看得出来:
 - 【比赛游记】NOIP2018游记
			
往期回顾:[比赛游记]NOIP2017游记 转眼间又过去了一年,当年还是初中生的我已经摇身一变成为了AHSOFNU的高一学生. 回顾这一年我好像也没学什么新东西,要说有用的可能就无旋Treap吧,不知 ...
 - linux regulator之浅见【转】
			
转自:http://blog.csdn.net/batoom/article/details/17081651 1: 校准器的基本概念 所谓校准器实际是在软件控制下把输入的电源调节精心输出. Regu ...
 - SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
			
http://scons.org/ https://www.ibm.com/developerworks/cn/linux/l-cn-scons/index.html 后附:另外,WAF是一个基于sc ...