先贴四份矩阵快速幂的模板:http://www.cnblogs.com/shangyu/p/3620803.html

http://www.cppblog.com/acronix/archive/2010/08/23/124470.aspx?opt=admin

http://www.cnblogs.com/vongang/archive/2012/04/01/2429015.html

http://www.cnblogs.com/yan-boy/archive/2012/11/29/2795294.html

233 Matrix

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 257    Accepted Submission(s): 165

Problem Description
   In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233333 ... in the same meaning. And here is the question: Suppose we have a matrix called 233 matrix. In the first line, it would be 233, 2333, 23333... (it means a0,1 = 233,a0,2 = 2333,a0,3 = 23333...) Besides, in 233 matrix, we got ai,j = ai-1,j +ai,j-1( i,j ≠ 0). Now you have known a1,0,a2,0,...,an,0, could you tell me an,m in the 233 matrix?
 
Input
   There are multiple test cases. Please process till EOF.
   For each case, the first line contains two postive integers n,m(n ≤ 10,m ≤ 109). The second line contains n integers, a1,0,a2,0,...,an,0(0 ≤ ai,0 < 231).
 
Output
   For each case, output an,m mod 10000007.
 
Sample Input
1 1
1
2 2
0 0
3 7
23 47 16
 
Sample Output
234
2799
72937

Hint

 
Source
 
Recommend
hujie   |   We have carefully selected several similar problems for you:  5017 5016 5014 5013 5012 

题解1:http://www.cnblogs.com/whatbeg/p/3971994.html

题解2:http://blog.csdn.net/u013368721/article/details/39271565

题目分析:矩阵快速幂,构建一个如下的矩阵即可:

  1. n+2行的矩阵
  2. --                      --   --  --
  3. | 1  1  1  1  1  1  1  0 |   | a1 |
  4. | 0  1  1  1  1  1  1  0 |   | a2 |
  5. | 0  0  1  1  1  1  1  0 |   | a3 |
  6. | 0  0  0  1  1  1  1  0 |   | a4 |
  7. | 0  0  0  0  1  1  1  0 | * | a5 |
  8. | 0  0  0  0  0  1  1  0 |   | an |
  9. |  - - - - - - - - - - - |   |    |
  10. | 0  0  0  0  0  0 10  1 |   | 233|
  11. | 0  0  0  0  0  0  0  1 |   | 3  |
  12. --                      --   --  --
 #include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<queue>
#include<map>
#include<string> #define N 15
#define M 15
#define mod 10000007
#define p 10000007
#define mod2 100000000
#define ll long long
#define LL long long
#define maxi(a,b) (a)>(b)? (a) : (b)
#define mini(a,b) (a)<(b)? (a) : (b) using namespace std; ll nn,m;
ll n;
ll x[];
//ll ans; struct Mat
{
ll mat[N][N];
}; Mat e,f,g;
Mat operator * (Mat a,Mat b)
{
Mat c;
memset(c.mat,,sizeof(c.mat));
ll i,j,k;
for(k = ; k < n ; k++)
{
for(i = ; i < n ;i++)
{
if(a.mat[i][k]==) continue;//优化
for(j = ;j < n ;j++)
{
if(b.mat[k][j]==) continue;//优化
c.mat[i][j] = (c.mat[i][j]+(a.mat[i][k]*b.mat[k][j])%mod)%mod;
}
}
}
return c;
}
Mat operator ^(Mat a,ll k)
{
Mat c;
ll i,j;
for(i = ; i < n ;i++)
for(j = ; j < n ;j++)
c.mat[i][j] = (i==j);
for(; k ;k >>= )
{
if(k&) c = c*a;
a = a*a;
}
return c;
} void ini()
{
ll i,j;
for(i=;i<=nn;i++){
scanf("%I64d\n",&x[i]);
}
memset(e.mat,,sizeof(e.mat));
memset(f.mat,,sizeof(f.mat));
e.mat[][]=;
e.mat[][]=;
e.mat[][]=+x[];
for(i=;i<=nn;i++){
e.mat[][i+]=e.mat[][i]+x[i];
}
for(j=;j<nn+;j++){
if(j!=){
f.mat[][j]=;
}
f.mat[][j]=;
}
for(i=;i<nn+;i++){
for(j=i;j<nn+;j++){
f.mat[i][j]=;
}
}
n=nn+;
} void solve()
{
if(m>){
g= e* (f^(m-) );
}
else{
g.mat[][nn+]=e.mat[][nn+];
}
} void out()
{
printf("%I64d\n",g.mat[][nn+]);
} int main()
{
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout);
//scanf("%d",&T);
//for(int cnt=1;cnt<=T;cnt++)
// while(T--)
while(scanf("%I64d%I64d",&nn,&m)!=EOF)
{
ini();
solve();
out();
} return ;
}

HDU 5015 233 Matrix(网络赛1009) 矩阵快速幂的更多相关文章

  1. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 矩阵快速幂

    Bob has a not even coin, every time he tosses the coin, the probability that the coin's front face u ...

  2. hdu 1757 A Simple Math Problem (矩阵快速幂,简单)

    题目 也是和LightOJ 1096 和LightOJ 1065 差不多的简单题目. #include<stdio.h> #include<string.h> #include ...

  3. 题解报告:poj 3233 Matrix Power Series(矩阵快速幂)

    题目链接:http://poj.org/problem?id=3233 Description Given a n × n matrix A and a positive integer k, fin ...

  4. HDU - 5015 233 Matrix (矩阵快速幂)

    In our daily life we often use 233 to express our feelings. Actually, we may say 2333, 23333, or 233 ...

  5. HDU 1757 A Simple Math Problem(矩阵快速幂)

    题目链接 题意 :给你m和k, 让你求f(k)%m.如果k<10,f(k) = k,否则 f(k) = a0 * f(k-1) + a1 * f(k-2) + a2 * f(k-3) + …… ...

  6. HDU 5950 Recursive sequence 【递推+矩阵快速幂】 (2016ACM/ICPC亚洲区沈阳站)

    Recursive sequence Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Other ...

  7. 广工十四届校赛 count 矩阵快速幂

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:求,直接矩阵快速幂得f(n)即可 构造矩阵如下: n^3是肯定得变换的,用二项式展开来一点 ...

  8. hdu 2604 Queuing dp找规律 然后矩阵快速幂。坑!!

    http://acm.hdu.edu.cn/showproblem.php?pid=2604 这题居然O(9 * L)的dp过不了,TLE,  更重要的是找出规律后,O(n)递推也过不了,TLE,一定 ...

  9. POJ 3233 Matrix Power Series (矩阵快速幂+二分求解)

    题意:求S=(A+A^2+A^3+...+A^k)%m的和 方法一:二分求解S=A+A^2+...+A^k若k为奇数:S=(A+A^2+...+A^(k/2))+A^(k/2)*(A+A^2+...+ ...

随机推荐

  1. Web项目之Django基础

    Django目录: python项目Django(web服务) python项目Django(HTTP协议) python项目Django(Django的安装与使用) python项目Django(U ...

  2. ubuntu 升级到5.1kernel,打开bbr

    apt-get -f install wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.1/linux-headers-5.1.0-0 ...

  3. 清北学堂2018DP&图论精讲班 DP部分学习笔记

    Day 1 上午 讲的挺基础的--不过还是有些地方不太明白 例1 给定一个数n,求将n划分成若干个正整数的方案数. 例2 数字三角形 例7 最长不下降子序列 以上太过于基础,不做深入讨论 例3 给定一 ...

  4. bootstrap历练实例: 基本胶囊式的导航菜单

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  5. shell脚本,awk实现文件a的每行数据与文件b的相对应的行的值相减,得到其绝对值。

    解题思路 文件 shu 是下面这样的.220 34 50 70553 556 32 211 1 14 98 33 文件 jian是下面这样的.1082 想要得到结果是下面这样的.210 24 40 6 ...

  6. 总结 Swift 中随机数的使用

    在我们开发的过程中,时不时地需要产生一些随机数.这里我们总结一下Swift中常用的一些随机数生成函数.这里我们将在Playground中来做些示例演示. 整型随机数 如果我们想要一个整型的随机数,则可 ...

  7. 初涉DSU on tree

    早先以为莫队是个顶有用的东西,不过好像树上莫队(不带修)被dsu碾压? dsu one tree起源 dsu on tree是有人在cf上blog上首发的一种基于轻重链剖分的算法,然后好像由因为这个人 ...

  8. 对于Nginx+PHP实现大文件上传时候需要修改的参数

    post_max_size表示POST表单提交的最大大小upload_max_filesize 表示文件上传的最大大小. 通常post_max_size设置的值必须必upload_max_filesi ...

  9. Python自动化测试框架——数据驱动(从文件中读取)

    学过编程的伙伴们都知道,数据不仅可以从代码中读取,还可以从文件中读取. 今天小编就简要的介绍一下从文件中读取数据,并应用到自动化测试中方法. 先来展示下接下来将要用到的文件在项目中的结构 从txt文件 ...

  10. JavaScript正则表达式-RegExp对象

    RegExp对象方法 exec():与String对象的match()方法功能相同. 参数为被搜索字符串.返回数组或null. test():与String对象的search()方法功能相同. 参数为 ...