HDU6470 ()矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=6470
题意:f[n] = f[n-1] + f[n-2]*2 + n^3;
f[1] =1 ; f[2] = 2 ; 求f[n;
分析:一眼相望可知为矩阵快速幂 , 在此在此加深了矩阵快速幂的用法;
下面是推导过程





所以最终F[n]=A^(n-2)* res;
应为相乘的矩阵有F[n-2] , 所以相乘到(n-2)
res=(a2
a1
27
9
3
1)
#include<stdio.h>
#include<vector>
using namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;
typedef vector<ll>vec;
typedef vector<vec>mat; const int M = ;
ll n;
mat mul(mat &A , mat &B)
{
mat C(A.size() , vec(B.size()));
for(int i= ; i<A.size() ; i++)
{
for(int k= ; k<B.size() ; k++)
{
if(A[i][k]==)
continue;
for(int j= ; j<B[].size() ; j++)
{
if(B[k][j]==)
continue;
C[i][j] = (C[i][j]%M+A[i][k]*B[k][j]%M)%M;
}
}
}
return C;
}
mat pow(mat A,ll n)
{
mat B(A.size(),vec(A.size()));
for(int i= ; i<A.size() ; i++)
B[i][i]=; while(n>)
{
if(n&)
B = mul(B,A);
A = mul(A,A);
n >>= ;
}
return B;
}
void so( )
{
mat A(,vec());///构造矩阵
A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;
A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;
A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;
A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;
A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;
A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;A[][]=;
A = pow(A,n);
ll ans=(A[][]*%M + A[][]%M + A[][]* %M+ A[][]*%M + A[][]*%M + A[][]%M)%M;///根据初始矩阵相乘
printf("%lld\n",ans%M); } int main()
{ int t;
scanf("%d",&t);
while(t--)
{
scanf("%lld",&n); if(n==)
{
puts("");continue;
}
if(n==-)
break;
n-=;
so();
} return ;
}
总结:

HDU6470 ()矩阵快速幂的更多相关文章
- 广工赛-hdu6470矩阵快速幂
递推时把(n+1)^3拆开 构造矩阵即可 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...
- 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] 题 ...
- 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)
题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...
- 51nod 算法马拉松18 B 非010串 矩阵快速幂
非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...
- 51nod 1113 矩阵快速幂
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...
- 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】
还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...
- HDU5950(矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 题意:f(n) = f(n-1) + 2*f(n-2) + n^4,f(1) = a , f(2 ...
- 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 输 ...
- hdu2604(递推,矩阵快速幂)
题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...
随机推荐
- js 操作table
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default4.aspx.cs ...
- 【原创】linux signal处理中的几个问题(suse下莫名其妙死锁的处理)
我在CSDN专栏写过的,老帖子最近发现在腾讯的CVM上,服务器总是平凡的死锁后查明真像为 当你发生sig 11的异常时,会进入处理函数 signalHandler同时此时生成相应的dump file时 ...
- python 正则表达式 练习题
会用到的语法 正则字符 释义 举例 + 前面元素至少出现一次 ab+:ab.abbbb 等 * 前面元素出现0次或多次 ab*:a.ab.abb 等 ? 匹配前面的一次或0次 Ab?: A.Ab 等 ...
- SharePoint Server 2013 Excel Web Access无法显示
环境信息:SharePoint Server 2013 中文版,版本为15.0.4420.1017 Windows Server 2008 r2中文版 Sql Server 2012 问题描述:在Sh ...
- svn: Can’t convert string from ‘UTF-8’ to native encoding: 解决办法
主要原因是linux的编码发生改动 只需该为 en_US.UFT-8即可 [具体操作可以查看]https://www.cnblogs.com/sz-xioabai/p/10523423.html
- 多线程《四》Thread对象的其他属性和方法
Thread对象的其他属性或方法 介绍 Thread实例对象的方法 # isAlive(): 返回线程是否活动的. # getName(): 返回线程名. # setName(): 设置线程名. th ...
- Django的文件上传以及预览、存储
思路: 文件上传通过前端的input标签,input设置display:none属性. 内容显示需要让前端通过<img>标签读取图片内容,可以通过<label>标签连接< ...
- 简述ref与out区别
1.相同点:两者都是按地址(引用)传递的,使用后都将改变原来参数的数值. 2.区别:ref可以把参数的数值传递进函数,但是out是要把参数清空(声明时不必显示初始化),就是说你无法把一个数值从out传 ...
- Win通过端口号结束进程
准备: 01在cmd中查看命令使用 格式:命令名称 /? 02netstat 03findstr C:\Users\Good>findstr /? 在文件中寻找字符串. ...... strin ...
- java10:基于时间的版本控制
功能发布 从Java 10开始,采用了一种新的严格的基于时间的发布模式. 在这个新模型中,Java平台的主要版本(现称为功能版本)将每6个月(3月和9月)发布一次. 功能版本将包含语言功能,JVM功能 ...