hdu6470 矩阵快速幂+构造矩阵
http://acm.hdu.edu.cn/showproblem.php?pid=6470
题意
\(f[n]=2f[n-2]+f[n-1]+n^3,n \leq 10^{18}\),求f[n]
题解
- 每一项只能由上一项经线性变换转移过来
代码
#include<bits/stdc++.h>
#define P 123456789
#define ll long long
using namespace std;
struct N{
ll a[10][10];
};
N mul(N x,N y){
N z;
memset(z.a,0,sizeof(z.a));
for(int i=0;i<6;i++){
for(int j=0;j<6;j++){
for(int k=0;k<6;k++){
z.a[i][j]+=(x.a[i][k]*y.a[k][j])%P;
z.a[i][j]%=P;
}
}
}
return z;
}
N pw(N y,ll x){
N z;memset(z.a,0,sizeof(z.a));
for(int i=0;i<6;i++)z.a[i][i]=1;
while(x){
if(x&1)z=mul(z,y);
y=mul(y,y);
x>>=1;
}
return z;
}
int T;
ll n,ans,a[]={2,1,8,4,2,1};
int b[][6]={{1,1,0,0,0,0},
{2,0,0,0,0,0},
{1,0,1,0,0,0},
{3,0,3,1,0,0},
{3,0,3,2,1,0},
{1,0,1,1,1,1}};
int main(){
cin>>T;
while(T--){
ans=0;
cin>>n;
if(n==1)printf("1\n");
else if(n==2)printf("2\n");
else{
N y;memset(y.a,0,sizeof(y.a));
y.a[0][0]=y.a[0][1]=1;
y.a[1][0]=2;
y.a[2][0]=y.a[2][2]=1;
y.a[3][0]=y.a[3][2]=3;y.a[3][3]=1;
y.a[4][0]=y.a[4][2]=3;y.a[4][3]=2;y.a[4][4]=1;
y.a[5][0]=y.a[5][2]=y.a[5][3]=y.a[5][4]=y.a[5][5]=1;
y=pw(y,n-2);
for(int i=0;i<6;i++){
ans+=a[i]*y.a[i][0]%P;
ans%=P;
}
printf("%lld\n",ans);
}
}
}
hdu6470 矩阵快速幂+构造矩阵的更多相关文章
- Luogu 3390 【模板】矩阵快速幂 (矩阵乘法,快速幂)
Luogu 3390 [模板]矩阵快速幂 (矩阵乘法,快速幂) Description 给定n*n的矩阵A,求A^k Input 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵 ...
- 51nod 1113 矩阵快速幂( 矩阵快速幂经典模板 )
1113 矩阵快速幂 链接:传送门 思路:经典矩阵快速幂,模板题,经典矩阵快速幂模板. /******************************************************* ...
- Construct a Matrix (矩阵快速幂+构造)
There is a set of matrixes that are constructed subject to the following constraints: 1. The matrix ...
- HDU 1588 矩阵快速幂 嵌套矩阵
这个题目搞了我差不多一个下午,之前自己推出一个公式,即 f[n+k]=k*f[n]+f[n-1]结果发现根本不能用,无法降低复杂度. 后来又个博客的做法相当叼,就按他的做法来了 即 最终求得是 S(n ...
- LA 3704 (矩阵快速幂 循环矩阵) Cellular Automaton
将这n个格子看做一个向量,每次操作都是一次线性组合,即vn+1 = Avn,所求答案为Akv0 A是一个n*n的矩阵,比如当n=5,d=1的时候: 不难发现,A是个循环矩阵,也就是将某一行所有元素统一 ...
- 题解——洛谷P3390 【模板】矩阵快速幂(矩阵乘法)
模板题 留个档 #include <cstdio> #include <algorithm> #include <cstring> #define int long ...
- hdu3483之二项式展开+矩阵快速幂
A Very Simple Problem Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Ot ...
- Educational Codeforces Round 60 D dp + 矩阵快速幂
https://codeforces.com/contest/1117/problem/D 题意 有n个特殊宝石(n<=1e18),每个特殊宝石可以分解成m个普通宝石(m<=100),问组 ...
- hdu 1597(矩阵快速幂)
1597: 薛XX后代的IQ Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 228 Solved: 55[Submit][Status][Web Bo ...
随机推荐
- 第05组 Beta冲刺(1/4)
第05组 Beta冲刺(1/4) 队名:天码行空 组长博客连接 作业博客连接 团队燃尽图(共享): GitHub当日代码/文档签入记录展示(共享): 组员情况: 组员1:卢欢(组长) 过去两天完成了哪 ...
- 关于scanf的一些知识
10.22,对现阶段已知道的scanf的一些用法或注意事项的一些总结: 1.scanf中,赋值的那个数据前面一定加&! 2.若情景要求必须输入空格的,scanf("%d%c%d&qu ...
- OpenvSwitch系列之五 网桥特性功能配置
Open vSwitch系列之一 Open vSwitch诞生 Open vSwitch系列之二 安装指定版本ovs Open vSwitch系列之三 ovs-vsctl命令使用 Open vSwit ...
- 反射(hasattr和getattr和setattr和delattr)
目录 一.反射在类中的使用 1.1 应用 二.反射在模块中的使用 2.1 前言 2.2 反射机制 2.2.1 getattr() 2.2.2 hasattr(object, name) 2.2.3 s ...
- perl: warning: Setting locale failed. 解决
perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAG ...
- 开源的13个Spring Boot 优秀学习项目!超53K星,一网打尽!
Spring Boot 算是目前 Java 领域最火的技术栈了,也是Java开发人员不得不掌握的技术,今天给大家整理了13个优质 Spring Boot 开源项目给大家参考,希望能够帮助到正在学习 S ...
- 转载-ThreadPoolExecutor里面4种拒绝策略(详细)
原文链接:https://blog.csdn.net/wjs19930820/article/details/79849050 1 /** * 定义异步任务执行线程池 */ @Configuratio ...
- IT兄弟连 Java语法教程 流程控制语句 分支结构语句5
5 switch-case条件语句 Java中的第二种分支控制语句时switch语句,switch语句提供了多路支持,因此可以使程序在多个选项中进行选择.尽管一系列嵌套if语句可以执行多路测试,然而 ...
- Web前端基础(2):HTML(二)
1. body中的相关标签 1.1 标题标签:hn HTML提供<hn>系列标签,用于修饰标签,包含:<h1>.<h2>.<h3>.<h4> ...
- 清新水墨色中国风通用教育培训课件PPT模板
模板来源:http://ppt.dede58.com/jiaoxuekejian/26220.html