hdu 5015 矩阵快速幂(可用作模板)
转载:http://blog.csdn.net/wdcjdtc/article/details/39318847
之前各种犯傻 推了好久这个东西。。
后来灵关一闪 就搞定了。。
矩阵的题目,就是构造矩阵比较难想!
题意:给出一个矩阵的第一列和第一行(下标从0开始),(0,0)位置为0,
第一行为,233,2333,23333...一次加个3,
第一列为输入的n个数。
然后从(1,1)位置开始,等于上面的数加左边的数,问(n+1,m+1)的数是多少,也就是右下角的数
思路:
把矩阵画出来:
| 0 233 2333 |
| b0 b1 b2 |
| c0 c1 c2 |
| d0 d1 d2 |
b1=233+b0,c1=b1+c0=233+b0+c0, d1=c1+d0=233+b0+c0+d0。
那么我们不妨设233为a0,a1=a0*10+3
这样每一项就都是由前面的项的得到了,因为有个常数3,所以再设一个常数1
那么我们就可以构造一个这样的矩阵
| 1 3 0 0 0 |
| 0 10 1 1 1 |
| 1 233 b0 c0 d0 | * | 0 0 1 1 1 | = | 1 2333 b1 c1 d1 |
| 0 0 0 1 1 |
| 0 0 0 0 1 |
这样就是递推下去,前面的乘上后面矩阵的m次方,输出ans.mat[0][n+1] 就ok了!
代码:
#include"cstdlib"
#include"cstdio"
#include"cstring"
#include"cmath"
#include"stack"
#include"algorithm"
#include"iostream"
using namespace std;
int m=10000007;
struct matrix
{
__int64 mat[15][15];
}; matrix matmul(matrix a,matrix b,int n,int m) //矩阵乘法 n阶矩阵a、b相乘对m取模
{
int i,j,k;
matrix c;
memset(c.mat,0,sizeof(c.mat));
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j];
c.mat[i][j]%=m;
}
}
}
return c;
}
matrix matpow(matrix a,int k,int n,int m) //矩阵快速幂取模 n阶矩阵a的k次方对m取模
{
matrix b;
int i;
memset(b.mat,0,sizeof(b.mat));
for(i=0;i<n;i++) b.mat[i][i]=1;
while(k)
{
if(k&1) b=matmul(a,b,n,m);
a=matmul(a,a,n,m);
k>>=1;
}
return b;
}
int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=-1)
{
int i,j;
matrix a,b,ans;
memset(a.mat,0,sizeof(a.mat));
memset(b.mat,0,sizeof(b.mat));
for(i=0;i<n;i++) scanf("%I64d",&a.mat[0][i+2]);
a.mat[0][0]=1;
a.mat[0][1]=233;
b.mat[0][0]=1;
b.mat[0][1]=3;
b.mat[1][1]=10;
for(i=2;i<=n+1;i++)
{
for(j=1;j<1+i;j++)
b.mat[j][i]=1;
}
ans=matmul(a,matpow(b,k,n+2,m),n+2,m);
printf("%I64d\n",ans.mat[0][n+1]);
}
return 0;
}
hdu 5015 矩阵快速幂(可用作模板)的更多相关文章
- 随手练——HDU 5015 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5015 看到这个限时,我就知道这题不简单~~矩阵快速幂,找递推关系 我们假设第一列为: 23 a1 a2 ...
- hdu 5015(矩阵快速幂z )
a[i][j] = a[i-1][j] + a[i][j-1] m.特别大,可以计算出第一列,找出规律,构建一个特殊的矩阵,运用快速幂 设矩阵x: 1 0 0 0 ... |10 1 1 1 0 0 ...
- hdu 2604 矩阵快速幂模板题
/* 矩阵快速幂: 第n个人如果是m,有f(n-1)种合法结果 第n个人如果是f,对于第n-1和n-2个人有四种ff,fm,mf,mm其中合法的只有fm和mm 对于ffm第n-3个人只能是m那么有f( ...
- HDU - 1575——矩阵快速幂问题
HDU - 1575 题目: A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n( ...
- HDU 2855 (矩阵快速幂)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2855 题目大意:求$S(n)=\sum_{k=0}^{n}C_{n}^{k}Fibonacci(k)$ ...
- HDU 4471 矩阵快速幂 Homework
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4471 解题思路,矩阵快速幂····特殊点特殊处理····· 令h为计算某个数最多须知前h个数,于是写 ...
- Luogu P3390 【模板】矩阵快速幂&&P1939 【模板】矩阵加速(数列)
补一补之前的坑 因为上次关于矩阵的那篇blog写的内容太多太宽泛了,所以这次把一些板子和基本思路理一理 先看这道模板题:P3390 [模板]矩阵快速幂 首先我们知道矩阵乘法满足结合律而不满足交换律的一 ...
- hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * ...
- HDU 3802 矩阵快速幂 化简递推式子 加一点点二次剩余知识
求$G(a,b,n,p) = (a^{\frac {p-1}{2}}+1)(b^{\frac{p-1}{2}}+1)[(\sqrt{a} + \sqrt{b})^{2F_n} + (\sqrt{a} ...
随机推荐
- P3564 [POI2014]BAR-Salad Bar
传送门 我是来帮加藤大佬写题解的--全世界都没找到加藤大佬写法的说明--很难受-- 首先我们把\(p\)看成\(1\),\(j\)看成\(-1\),一个区间满足条件就意味着这个区间的所有前缀和都大于等 ...
- Django day 34 过滤课程,登录,redis,python操作redis
一:过滤课程, 二:登录 三:redis, 四:python操作redis
- c语言 error C4996: 'strupr': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name
问题: 在使用visual studio 2013,进行调试执行代码时,出现如下错误: error C4996: 'strupr': The POSIX name for this item is d ...
- Linux学习笔记之Linux相关知识
[想成为某一方面的大神,没有捷径可走,只能不断的记录.练习.总结.coding……] notes:主要从网上摘录了一些关于Linux的历史以及一些相关内容,以便对Linux系统有一定的了解.这不但可以 ...
- nginx connect failed (110- Connection timed out) 问题排查
首先排查 ping 下 nginx 与代理服务是否ping 的通,带端口的,telnet 下端口号是否是通的,本次遇到问题为 telnet 发现有台服务器不通,原因是端口未开放
- redis之有序集合类型(Zset)——排行榜的实现
当数据库对排序支持的不是很好,可以利用redis有序集合排序 原文链接:http://blog.csdn.net/loophome/article/details/50373202
- [ CodeForces 515 D ] Drazil and Tiles
\(\\\) \(Description\) 给出一个\(N\times M\) 的网格,一些位置是障碍,其他位置是空地,求是否存在一个用 \(1\times 2\)的骨牌铺满空地的方案,以及方案是否 ...
- OKHTTP 简单分析
内部使用了OKIO库, 此库中Source表示输入流(相当于InputStream),Sink表示输出流(相当于OutputStream) 特点: ·既支持同步请求,也支持异步请求,同步请求会阻塞当前 ...
- axios 正确打开方式
一.安装1. 利用npm安装npm install axios --save2. 利用bower安装bower install axios --save3. 直接利用cdn引入<script s ...
- jquery 实现点评标签 类似淘宝大众点评的 快速准时 货品完好等
111 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...