博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
233 Matrix
阅读量:5343 次
发布时间:2019-06-15

本文共 1973 字,大约阅读时间需要 6 分钟。

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?

InputThere 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).OutputFor each case, output a n,m mod 10000007.Sample Input

1 112 20 03 723 47 16

Sample Output

234279972937

Hint

 

矩阵快速幂

比较裸 ,首先找到原态和现态的关系,233,2333,23333,23333, 这些数都遵循 a0=a0'*10+3  ,

a1=a0'*10+3+a1'  ;   a2=a0'*10+3+a1'+a2'  ;  a3=a0'*10+3+a1'+a2'+a3'  ;

即 an=a0'*10+3+

 

代码如下:

#include
#include
#include
const int MOD=10000007;using namespace std;typedef long long LL;const int M=15;struct Matrix{ LL matrix[M][M];};int n;//矩阵的阶数void init(Matrix &res){ for(int i=0;i<=n;i++) { for(int j=0;j<=n;j++) res.matrix[i][j]=0; res.matrix[i][i]=1; }}Matrix multiplicative(Matrix a,Matrix b){ Matrix res; memset(res.matrix,0,sizeof(res.matrix)); for(int i = 0 ; i < n ; i++) for(int j = 0 ; j < n ; j++) for(int k = 0 ; k < n ; k++) res.matrix[i][j] =(res.matrix[i][j]%MOD+a.matrix[i][k]%MOD*b.matrix[k][j]%MOD)%MOD;return res;}Matrix pow(Matrix mx,int m){ Matrix res,base=mx; init(res); //初始为单位矩阵,即除主对角线都是1外,其他都是0 while(m) { if(m&1) res=multiplicative(res,base); base=multiplicative(base,base); m>>=1; } return res;}void lk_init(Matrix &b){ for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/lemon-jade/p/8277783.html

你可能感兴趣的文章
arcgis api 4.x for js 结合 Echarts4 实现散点图效果(附源码下载)
查看>>
加固linux
查看>>
Hyper-V虚拟机上安装一个图形界面的Linux系统
查看>>
【Crash Course Psychology】2. Research & Experimentation笔记
查看>>
关于 linux 的 limit 的设置
查看>>
MTK笔记
查看>>
shell cat 合并文件,合并数据库sql文件
查看>>
python全栈 计算机硬件管理 —— 硬件
查看>>
Delphi7编译的程序自动中Win32.Induc.a病毒的解决办法
查看>>
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
struts1和struts2的区别
查看>>
Redis常用命令
查看>>
微软职位内部推荐-Sr. SE - Office incubation
查看>>
套接口和I/O通信
查看>>
阿里巴巴面试之利用两个int值实现读写锁
查看>>
浅谈性能测试
查看>>
Winform 菜单和工具栏控件
查看>>
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>