2014西安網路賽1009||hdu5015 矩陣
http://acm.hdu.edu.cn/showproblem.php?pid=5015
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).
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
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <math.h>
#include <queue>
#include <stack>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long LL;
const int INF=0x3f3f3f3f;
const int N=10005;
const int MOD=10000007;
int n;
LL m,a[20];
struct Matrix
{
LL m[15][15];
};
Matrix I;
Matrix mult(Matrix a,Matrix b)
{
Matrix c;
for(int i=0;i<n+2;i++)
for(int j=0;j<n+2;j++)
{
c.m[i][j]=0;
for(int k=0;k<n+2;k++)
c.m[i][j]+=(a.m[i][k]*b.m[k][j])%MOD;
c.m[i][j]%=MOD;
}
return c;
}
Matrix quick_mod(Matrix a,LL n)
{
Matrix c=I;
while(n)
{
if(n&1)
c=mult(c,a);
n>>=1;
a=mult(a,a);
}
return c;
}
int main()
{
while(~scanf("%d%I64d",&n,&m))
{
a[0]=3;
a[1]=23;
for(int i=2;i<n+2;i++)
scanf("%I64d",&a[i]);
for(int i=0;i<n+2;i++)
for(int j=0;j<n+2;j++)
if(i==j)
I.m[i][j]=1;
else
I.m[i][j]=0;
/* for(int i=0;i<n+2;i++)
{
for(int j=0;j<n+2;j++)
printf("%I64d ",I.m[i][j]);
printf("\n");
}*/
Matrix A;
for(int i=0;i<n+2;i++)
for(int j=0;j<n+2;j++)
if(i>=j)
A.m[i][j]=1;
else
A.m[i][j]=0;
for(int i=1;i<n+2;i++)
A.m[i][1]=10;
LL ans=0;
Matrix B=quick_mod(A,m);
/*for(int i=0;i<n+2;i++)
{
for(int j=0;j<n+2;j++)
printf("%I64d ",B.m[i][j]);
printf("\n");
}*/
for(int i=0;i<n+2;i++)
ans=(ans+B.m[n+1][i]*a[i]%MOD)%MOD;
printf("%I64d\n",ans);
}
return 0;
}
相關文章
- 2014西安網路賽1006||hdu5012 bfs
- Wannafly模擬賽 矩陣 二維矩陣hash矩陣
- 2014西安網路賽1008||hdu5014 二進位制
- 打造網路安全宣傳矩陣矩陣
- 田忌賽馬博弈矩陣分析矩陣
- 2024矩陣杯初賽矩陣
- 西安網路 繳費地址
- 矩陣中的路徑矩陣
- 生成螺旋矩陣(方陣、矩陣)矩陣
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- hdu5445 || 2015長春網路賽1009題 多重揹包問題
- 2014年北京師範大學新生程式設計競賽網路賽程式設計
- 社交網路分析的 R 基礎:(三)向量、矩陣與列表矩陣
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 西安網際網路知名度如何(CRMEB系統)
- NOIP2014pj子矩陣[搜尋|DP]矩陣
- 矩陣中最大的二維矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣和陣列矩陣陣列
- 2014鞍山網路賽 E題||hdu 5001 概率dp
- 理解矩陣矩陣
- 矩陣相乘矩陣
- 矩陣分解矩陣
- 稀疏矩陣矩陣
- Numpy 矩陣矩陣
- 穿越矩陣矩陣
- 混淆矩陣矩陣
- 魔方矩陣矩陣
- 海浪矩陣矩陣
- 8.6 矩陣?矩陣
- 螺旋矩陣矩陣
- 找矩陣矩陣
- 矩陣乘法矩陣