Foj1683矩阵快速幂水题
Foj 1683 纪念SlingShot
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1683
题目:已知 F(n)=3 * F(n-1)+2 * F(n-2)+7 * F(n-3),n>=3,其中F(0)=1,F(1)=3,F(2)=5,对于给定的每个n,输出F(0)+ F(1)+ …… + F(n) mod 2009。直接构造矩阵就好了,这个矩阵还是很好构造的。
求左边的矩阵矩阵的n-2次幂,和右边的矩阵想成就可以了。
//Author: xiaowuga
//矩阵:3 2 7 0 5
// 1,0,0,0 3
// 0,1,0,0 1
// 3,2,7,1 9
//
#include<iostream>
#include<cstring>
#include<algorithm>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define size 4
#define MOD 2009
using namespace std;
typedef long long ll;
struct Matrix{
ll mat[][];
void clear(){
memset(mat,,sizeof(mat));
}
Matrix operator * (const Matrix & m) const{
Matrix tmp;
for(int i=;i<size;i++)
for(int j=;j<size;j++){
tmp.mat[i][j]=;
for(int k=;k<size;k++){
tmp.mat[i][j]+=mat[i][k]*m.mat[k][j]%MOD;
tmp.mat[i][j]%=MOD;
}
}
return tmp;
}
};
Matrix POW(Matrix m,ll k){
Matrix ans;
ans.clear();
for(int i=;i<size;i++) ans.mat[i][i]=;
while(k){
if(k&) ans=ans*m;
k/=;
m=m*m;
}
return ans;
}
int main() {
ios::sync_with_stdio(false);cin.tie();
int nCase;
cin>>nCase;
for(int i=;i<=nCase;i++){
ll n,f[]={,,,};
cin>>n;
ll ans=;
if(n<=){
for(int j=;j>=-n;j--)
ans+=f[j];
cout<<"Case "<<i<<": "<<ans<<endl;
}
else{
Matrix m;
m.clear();
m.mat[][]=m.mat[][]=;
m.mat[][]= m.mat[][]=;
m.mat[][]=m.mat[][]=;
m.mat[][]=m.mat[][]= m.mat[][]=;
//for(int a=0;a<4;a++){
//for(int b=0;b<4;b++) cout<<m.mat[a][b]<<" ";
//cout<<endl;
Matrix a=POW(m,n-);
for(int k=;k<;k++){
ans+=a.mat[][k]*f[k]%MOD;
ans%=MOD;
}
cout<<"Case "<<i<<": "<<ans<<endl;
} }
return ;
}
Foj1683矩阵快速幂水题的更多相关文章
- LightOJ 1065 - Number Sequence 矩阵快速幂水题
http://www.lightoj.com/volume_showproblem.php?problem=1065 题意:给出递推式f(0) = a, f(1) = b, f(n) = f(n - ...
- luoguP3390(矩阵快速幂模板题)
链接:https://www.luogu.org/problemnew/show/P3390 题意:矩阵快速幂模板题,思路和快速幂一致,只需提供矩阵的乘法即可. AC代码: #include<c ...
- Educational Codeforces Round 13——D. Iterated Linear Function(矩阵快速幂或普通快速幂水题)
D. Iterated Linear Function time limit per test 1 second memory limit per test 256 megabytes input ...
- HDU 1575 矩阵快速幂裸题
题意:中文题 我就不说了吧,... 思路:矩阵快速幂 // by SiriusRen #include <cstdio> #include <cstring> using na ...
- POJ3070矩阵快速幂简单题
题意: 求斐波那契后四位,n <= 1,000,000,000. 思路: 简单矩阵快速幂,好久没刷矩阵题了,先找个最简单的练练手,总结下矩阵推理过程,其实比较简单,关键 ...
- 51nod 1126 矩阵快速幂 水
有一个序列是这样定义的:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. 给出A,B和N,求f(n)的值. Input 输 ...
- POJ_Fibonacci POJ_3070(矩阵快速幂入门题,附上自己写的矩阵模板)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10521 Accepted: 7477 Descri ...
- Final Destination II -- 矩阵快速幂模板题
求f[n]=f[n-1]+f[n-2]+f[n-3] 我们知道 f[n] f[n-1] f[n-2] f[n-1] f[n-2] f[n-3] 1 1 ...
- hdu 1575 求一个矩阵的k次幂 再求迹 (矩阵快速幂模板题)
Problem DescriptionA为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据.每组数据的第一行有 ...
随机推荐
- Coreseek:第一步配置文件
Windows操作系统下:mysql数据源配置:(相应coreseek-3.2.13-win32/etc/csft_mysql.conf) #源定义 source mysql { type = mys ...
- jquery的defer
deferred.promise() 和 .promise() 这两个API语法几乎一样,但是有着很大的差别.deferred.promise()是Deferred实例的一个方法,他返回一个Defer ...
- 编写自己的代码库(javascript常用实例的实现与封装)
https://segmentfault.com/a/1190000010225928
- Xml解析之PULL解析 例1
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id=" ...
- CSS——伪元素
CSS伪元素 伪元素的语法: selector:pseudo-element {property:value;} 作 用 添加特殊样式 :first-line 伪元素 "first-l ...
- VIM打开shell脚本中文乱码解决
1. 查找 .vimrc文件 通常有2个地方保存这个文件的: (1) 在/etc/文件夹下面,是所有用户的vim配置 (2)每个用户的开始登录的文件夹下面,有些不一定有,比如hadoop用户,则在/h ...
- PHP+jquery+ajax实现分页
HTML <div id="list"> <ul></ul> </div> <div id="pagecount&q ...
- Spring MVC学习之三:处理方法返回值的可选类型
http://flyer2010.iteye.com/blog/1294400 ———————————————————————————————————————————————————————————— ...
- ci框架简单出现的错误[Undefined property: MContacts::$db]
出现这样的错误时说明自己忘记加载数据库了, application/config/aotuload.php $autoload['libraries'] = array('database') ...
- Python安装相关的机器学习库以及图像处理库
安装 sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-m ...