HDU 5015 - 233 매트릭스 - 매트릭스 쾌속 멱

http://acm.hdu.edu.cn/showproblem.php?pid=5015
제목 에 따라 (n + 2) * 1 의 원 행렬 을 구성 합 니 다.  【a1 a2 a3.....233  3】
n + 2 * n + 2 의 계수 행렬
【1 1 1 1 0   0】
【0 1 1 1 0   0】
【0 0 1 1 0   0】
【1 1 1 1 10 0】
【0 0 0 0 1   1】
원 매트릭스 가 계수 행렬 을 곱 할 때마다 i + 1 열의 데 이 터 를 얻 게 합 니 다.
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 


using namespace std;
struct Matrix
{
    long long mat[15][15];
} ;
int n,m;
const long long mod=10000007;
Matrix unit_matrix, c,xi;
Matrix mul(Matrix a, Matrix b) //    
{
    Matrix res;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
        {
            res.mat[i][j] = 0;
            for(int t = 0; t < n; t++)
            {
                res.mat[i][j] += a.mat[i][t] * b.mat[t][j];
                res.mat[i][j] %= mod;
            }
          //  printf("%d ",res.mat[0][0]);
        }

    return res;
}
Matrix pow_matrix(Matrix a, int m)  //     
{
    Matrix res = unit_matrix;
    while(m != 0)
    {
        if(m & 1)
            res = mul(res, a);
        a = mul(a, a);
        m >>= 1;
    }
    return res;
}

int  main()
{


    while(scanf("%d%d",&n,&m)!=EOF)
    {
        for (int i=0; i

좋은 웹페이지 즐겨찾기