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 a 0,1 = 233,a 0,2 = 2333,a 0,3 = 23333…) Besides, in 233 matrix, we got a i,j = a i-1,j +a i,j-1( i,j ≠ 0). Now you have known a 1,0,a 2,0,…,a n,0, could you tell me a n,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 ≤ 10 9). The second line contains n integers, a 1,0,a 2,0,…,a n,0(0 ≤ a i,0 < 2 31).
Output
For each case, output a n,m mod 10000007.
Sample Input
1 1
1
2 2
0 0
3 7
23 47 16
Sample Output
234
2799
72937

说句实话现在对矩阵快速幂还是不太熟悉。。
这个题有一个突破口就是a[i][j]= a[i-1][j]+a[i][j-1]。通过这一条件去构造矩阵。
我们可以一列一列的去递推这个关系。这是这个题挺玄幻的地方。还有一个就是题干中只给出了a[0][1],a[0][2]等等的值,却没有给出a[0][0]的值。如果a[0][0]=23的话,那岂不是太美了。
假如n=3,m=3

通过这个式子我们就可以得出递推矩阵,进而通过矩阵快速幂来实现。
代码如下:

#include<bits/stdc++.h>
#define ll long long
#define mod 10000007
using namespace std;struct Node{ll ans[15][15];
};
int n,m;inline void clear(Node &ans)
{for(int i=0;i<=n+1;i++){for(int j=0;j<=n+1;j++){ans.ans[i][j]=(i==j);}}
}
inline Node operator *(Node &a,Node &b)
{Node ans;for(int i=0;i<=n+1;i++)for(int j=0;j<=n+1;j++) ans.ans[i][j]=0;for(int k=0;k<=n+1;k++){for(int i=0;i<=n+1;i++){for(int j=0;j<=n+1;j++)ans.ans[i][j]=(ans.ans[i][j]+a.ans[i][k]*b.ans[k][j]%mod)%mod;}}return ans;
}
int main()
{while(~scanf("%d%d",&n,&m)){Node ret;clear(ret);Node ans1;for(int i=0;i<=n+1;i++){for(int j=0;j<=n+1;j++){if(j==0&&i!=n+1) ans1.ans[i][j]=10;else if(i!=n+1&&i>0&&i>=j) ans1.ans[i][j]=1;else if(j==n+1) ans1.ans[i][j]=1;else ans1.ans[i][j]=0; }}while(m){if(m&1) ret=ret*ans1;m>>=1;ans1=ans1*ans1;}ll x,ans=23*ret.ans[n][0]%mod;for(int i=1;i<=n;i++) {scanf("%lld",&x);ans=(ans+x*ret.ans[n][i]%mod)%mod;}ans=(ans+3*ret.ans[n][n+1]%mod)%mod;printf("%lld\n",ans%mod);}return 0;
}

努力加油a啊,(o)/~

233 Matrix HDU - 5015相关推荐

  1. 【矩阵快速幂】233 Matrix HDU - 5015

    Think: 1知识点:矩阵快速幂 2题意:定义一个233矩阵,第一行形如233, 23333, 233333, 233-(即a[0][1] = 233, a[0][2] = 2333,a[0][3] ...

  2. HDU 5015——233 Matrix

    题目:HDU 5015 233 Matrix 题目大意:给出矩阵的第0行(233,2333,23333,-)和第0列a1,a2,- an(n<=10,m<=10^9),给出式子: A[i] ...

  3. 【HDU - 5015 】233 Matrix (矩阵快速幂)

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

  4. [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats

    矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...

  5. HDU5015 233 Matrix

    题目的意思是有一个叫做233 Matrix的矩阵. 给定第一行元素a(0, 1) = 233, a(0, 2) = 2333, a(0, 3) = 23333, ..., a(0, n) = 10 * ...

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

    题目链接:点击查看 题目大意:初始化:第一行依次为233,2333,23333....第一列依次为a0,a1,a2....(题目中会给出),再给出递推公式:,求矩阵中第n行m列的数字是多少 题目分析: ...

  7. hdu- 5015 233 Matrix

    http://acm.hdu.edu.cn/showproblem.php?pid=5015 题意:第一行给出了 233 2333 23333 233333 ...... 也给出了第一列的数 ,让你计 ...

  8. Hdu5015 233 Matrix矩阵

    每一列能由前一列推过来,构造一个(n+2)*(n+2)的矩阵B,第k列 就等于  所构造的第一列A*B^(k-1) 比如 233                            10    10 ...

  9. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

最新文章

  1. 判断控件是否出现了滚动条
  2. iphone导出通讯录到安卓_科技资讯:iPhone苹果手机换新机如何将旧手机的通讯录导出到新的...
  3. 十九、Seaborn数据可视化
  4. 移动端web 禁止长按弹出的菜单 Safari
  5. java字符后移_java把字符串参数往后移3位后输出
  6. infomixdb mysql_不同数据库oracle mysql SQL Server DB2 infomix sybase分页查询语句
  7. java string hash变量_java基础(六)-----String性质深入解析
  8. monty python读音-PYTHON – 让quot;Monty 语言”进入自动化行业:第 1 部分
  9. sqlite3源码调试
  10. 解决win10系统安装ch341驱动程序显示“预安装成功”的一个方法
  11. 思科模拟器(交换机,路由器综合项目)
  12. DVP 接口时钟配置错误导致的高温出图异常
  13. [论文阅读笔记29]生物医学文本摘要(Biomedical Text Summarization)
  14. python实现excel到word转换
  15. linux运维阿铭,阿铭Linux
  16. [技巧]深入了解强大的 ES6 运算符
  17. java解二次方程函数_Charting for Java Swing中的FunctionSeries
  18. UEBA——通过用户画像识别安全威胁
  19. cadence 通孔焊盘_[转载]Cadence学习3(通孔类焊盘的建立)(转)
  20. python接口自动化--接口测试工具介绍(详解)

热门文章

  1. java中什么是守护线程_什么是Java的守护线程?
  2. java el表达式 导航规则_javaweb之EL表达式语言
  3. JAVA循环与分支语句edu_Java分支结构和循环结构原理与用法详解
  4. android获取屏幕的分辨率方法
  5. QT中图表类QChart之各种缩放/平移
  6. 有效使用计算机操作系统,有效地使用计算机操作系统.doc
  7. mysql中使用like模糊查询时如何转义%
  8. 苹果通知推送服务(APNS)关键特性摘要
  9. 使用BaseAdapter实现复杂的ListView
  10. springboot 添加 jsp支持