题意:
      给你一个(n+1)*(m+1)的矩阵mat,然后给你mat[0][1] = 233 ,mat[0][2] = 2333,mat[0][3] = 23333...,然后输入mat[1][0] ,mat[2][0] ,mat[3][0]....然后给了矩阵中的其他数值是mat[i][j] = mat[i-1][j] + mat[i][j-1],最后让你输出mat[n][m]。

思路:
   其中n <= 10 m <= 10^9 ,直接暴力果断超时,这个题目我们要仔细观察,n <= 10这个很重要,太大的话就不好弄了。这个题目我们可以用矩阵快速幂去做,构造一个n+2的矩阵


  a[1] a[2] a[n] 233 3       1  1  1  0 0      a[1] a[2] a[n] 2333 3 
                         *   0  1  1  0 0   =
                             0  0  1  0 0
                             1  1  1 10 0
                             0  0  0  1 1

提示下,矩阵这么建的原因是比如当前的a[3] = 上一步的 a[1] + a[2] + a[3] + 233..ok


#include<stdio.h>
#include<string.h>#define MOD 10000007

typedef struct
{__int64 mat[15][15];
}A;A mat_mat(A a ,A b ,int n)
{A c;memset(c.mat ,0 ,sizeof(c.mat));for(int k = 1 ;k <= n ;k ++)for(int i = 1 ;i <= n ;i ++)if(a.mat[i][k])for(int j = 1 ;j <= n ;j ++)c.mat[i][j] = (c.mat[i][j] + a.mat[i][k] * b.mat[k][j]) % MOD;return c;
}A quick_mat(A a ,int b ,int n)
{A c;memset(c.mat ,0 ,sizeof(c.mat));for(int i = 1 ;i <= n ;i ++)c.mat[i][i] = 1;while(b){if(b&1) c = mat_mat(c ,a ,n);a = mat_mat(a ,a ,n);b >>= 1;}return c;
}int main ()
{int i ,j ,n ,m;A GZ;int num[15];while(~scanf("%d %d" ,&n ,&m)){for(i = 1 ;i <= n ;i ++)scanf("%d" ,&num[i]);memset(GZ.mat ,0 ,sizeof(GZ.mat));for(j = 1 ;j <= n ;j ++){  for(i = 1 ;i <= j ;i ++) GZ.mat[i][j] = 1;GZ.mat[n+1][j] = 1;}GZ.mat[n+1][n+1] = 10;GZ.mat[n+2][n+1] = GZ.mat[n+2][n+2] = 1;A now = quick_mat(GZ ,m ,n + 2);__int64 Ans = 0;for(i = 1 ;i <= n ;i ++)Ans = (Ans + num[i] * now.mat[i][n]) % MOD;Ans = (Ans + 233 * now.mat[n+1][n] + 3 * now.mat[n+2][n]) % MOD;printf("%I64d\n" ,Ans);}return 0;
}

hdu5015 矩阵快速幂233(好题)相关推荐

  1. 51nod 1113 矩阵快速幂【裸题】【内含黑科技】

    1113 矩阵快速幂 基准时间限制:3 秒 空间限制:131072 KB 分值: 40  难度:4级算法题 给出一个N * N的矩阵,其中的元素均为正整数.求这个矩阵的M次方.由于M次方的计算结果太大 ...

  2. HDU - 4990 Reading comprehension(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:给出一段程序,进行优化后提交 题目分析:其实就是找规律,大水题一个,偶尔也是需要做做水题找找自信(逃) 先将题目中的程序拿下来,跑上100项,然后拿到oeis里找一下规律 ...

  3. HDU - 4686 Arc of Dream(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:给出定义: 现在依次给出n,A0,AX,AY,B0,BX,BY 求Aod的第n项对1e9+7取模后的结果 题目分析: 简单矩阵快速幂 首先化简一下: 初始矩阵:(取n=1 ...

  4. HDU - 1757 A Simple Math Problem(矩阵快速幂,水题)

    题目链接:点击查看 题目大意:实现公式: f(x)=x,x<10 f(x)=a0*f(x-1)+a1*f(x-2)+--+a9*f(x-10) 题目给出a0~a9,一个n和一个m,要求输出f(n ...

  5. 又见斐波那契~矩阵快速幂入门题

    链接:https://www.nowcoder.com/acm/contest/105/G 来源:牛客网 题目描述 这是一个加强版的斐波那契数列. 给定递推式 求F(n)的值,由于这个值可能太大,请对 ...

  6. 上海理工大学第二届“联想杯”全国程序设计邀请赛 - Little Witch Academia(矩阵快速幂)

    题目链接:点击查看 题目大意:给出两种型号的瓷砖,尺寸分别是 a∗1a*1a∗1 和 b∗1b*1b∗1,现在需要填满 w∗hw*hw∗h 的矩阵,需要满足以下两个情况: 瓷砖不能旋转 相邻的两行中, ...

  7. generator 1【矩阵快速幂】

    题目描述 You are given four positive integers x0,x1,a,bx_0, x_1, a, bx0​,x1​,a,b. And you know xi=a⋅xi−1 ...

  8. 矩阵快速幂的学习(系统的学习)

    学习博客:https://www.cnblogs.com/cmmdc/p/6936196.html https://www.cnblogs.com/yan-boy/archive/2012/11/29 ...

  9. Tr A 矩阵快速幂

    A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973. Input 数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n <= ...

最新文章

  1. 5如何将表格的一行数据清空_微信公众号推文中如何自定义添加表格?
  2. php rfc3986规范,「PSR 规范」PSR-7 HTTP 消息接口规范
  3. Leetcode 252, 253. Meeting Rooms
  4. Pytorch 笔记——tensor
  5. Linux crontab命令
  6. 如何跨项目工作空间访问MaxCompute资源和函数?
  7. uniapp页面传参使用encodeURIComponent转义特殊符号
  8. 2.3.3单链表的双向链表
  9. html中灰色怎么写,css如何实现置灰不可点
  10. Nginx 配置一个虚拟站点
  11. 智能SQL优化工具--SQL Optimizer for SQL Server(帮助提升数据库应用程序性能,最大程度地自动优化你的SQL语句 )...
  12. linux vnc服务器6,Linux(RHEL6\CENTOS6\OLE6) 下VNC-SERVER安装与配置
  13. 私有云落地解决方案之网络篇-网络架构
  14. 天然气故障代码大全_天然气发动机故障代码表(20130101)
  15. nmds与mds的区别_常见分析方法 | PCA、PCoA和NMDS有什么区别?
  16. 常见的测试用例设计方法8---正交试验法
  17. INSERT INTO SELECT FROM 的用法
  18. 基于单幅图像的三维动物自动建模项目(The SMAL Model)学习笔记1
  19. 虚幻官方文档使用UMG(虚幻运动图像)的用户界面笔记[VS2019]
  20. 加权voronoi图 matlab,加权voronoi图matlab

热门文章

  1. HTMLCSS学习笔记(四)----浮动原理及清浮动
  2. 二线城市的我,和北京的同学比成长
  3. Elasticsearch 2.20入门篇:基本操作
  4. 将用户输入内容中的尖括号、引号等进行转义
  5. 打开excel发送错误报告
  6. HP—UX更改存储设备名
  7. 20080509 - System.ExecutionEngineException 在 DefaultDomain 中发生
  8. 关于js里的document.compatmode
  9. css布局详解(一)——盒模型
  10. PHP文件包含漏洞原理分析和利用方法