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 ()矩阵快速幂的更多相关文章

  1. 广工赛-hdu6470矩阵快速幂

    递推时把(n+1)^3拆开 构造矩阵即可 #include<bits/stdc++.h> using namespace std; #define ll long long #define ...

  2. 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] 题 ...

  3. 矩阵快速幂 HDU 4565 So Easy!(简单?才怪!)

    题目链接 题意: 思路: 直接拿别人的图,自己写太麻烦了~ 然后就可以用矩阵快速幂套模板求递推式啦~ 另外: 这题想不到或者不会矩阵快速幂,根本没法做,还是2013年长沙邀请赛水题,也是2008年Go ...

  4. 51nod 算法马拉松18 B 非010串 矩阵快速幂

    非010串 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个01字符串满足不存在010这样的子串,那么称它为非010串. 求长度为n的非010串的个数.(对1e9+7取模) ...

  5. 51nod 1113 矩阵快速幂

    题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...

  6. 【66测试20161115】【树】【DP_LIS】【SPFA】【同余最短路】【递推】【矩阵快速幂】

    还有3天,今天考试又崩了.状态还没有调整过来... 第一题:小L的二叉树 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣.所以,小L当时卡在了二叉树. ...

  7. 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 ...

  8. 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 输 ...

  9. hdu2604(递推,矩阵快速幂)

    题目链接:hdu2604 这题重要的递推公式,找到公式就很easy了(这道题和hdu1757(题解)类似,只是这道题需要自己推公式) 可以直接找规律,推出递推公式,也有另一种找递推公式的方法:(PS: ...

随机推荐

  1. JS中的两种刷新方法以及区别和适用范围

    在项目中有一个人信息修改的页面,但是修改后显示的却是修改之前的内容,分析问题后发现查询语句写在了修改语句之前,有些某些需要又必须这么写,但是修改信息后先却显示之前的信息也太不科学了. 所以我就想用js ...

  2. Windows下Memcached的安装配置方法

    1.将第一个包解压放某个盘下面,比如在c:\memcached. 2.在终端(也即cmd命令界面)下输入 'c:\memcached\memcached.exe -d install' 安装. 3.再 ...

  3. 246. Strobogrammatic Number 上下对称的数字

    [抄题]: A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at u ...

  4. 关于recv的返回值

    通常recv有几种返回值 1.==0 表示收到FIN包, 因为FIN包,是状态为标记为FIN的空包,没有携带数据,所以recv的长度为0 2.>0 表示收到了数据, 但是有没有收完,是不知道的 ...

  5. Shell +Cygwinterminal+WinMySQL 传参数授权

    前言:新公司因为部分业务原因有好几百组win机器装MySQL授权登录比较麻烦,简单的写了一个shell传值自动授权的脚本,保存复用. #!/bin/bash #author liding@zlhy.c ...

  6. PHP加密与解密

    password_hash ( string $password , integer $algo [, array $options ] ) 加密,生成60位得字符串 $algo:一个用来在散列密码时 ...

  7. SpringMVC——<mvc:annotation-driven/>

    会自动注 册RequestMappingHandlerMapping .RequestMappingHandlerAdapter 与 ExceptionHandlerExceptionResolver ...

  8. python核心编程第2章课后题答案(第二版36页)

    2-5 Loops and Numbers a) i = 0    while i <11:     print i    i += 1 b) for i in range(0,11): pri ...

  9. Java 线程的通讯--生产者和消费者

    package 生产者和消费者; //消费者 public class Customer implements Runnable { private Share_resources rescource ...

  10. <%@ include > 与< jsp:include >

    include指令表示在JSP编译时插入一个包含文本或者代码的文件,把文件中的文本静态地包含过去.也就是说,会把被包含的页面拷贝到包含的页面中指令所在的位置. 语法格式:<%@ include ...