hdu 1575 Tr A(矩阵快速幂)

http://acm.hdu.edu.cn/showproblem.php?pid=1575

思路:这题求的是矩阵A^k,可以用矩阵相乘的方法,设a=1,b=0,然后把k进行分解,当k为奇数是,k--,b+=a,当k为偶数是k/=2,a=2*a,最后再将a=a+b.
 

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
int m;
long long int n;
struct node
{
    int a[15][15];
};
node fix(node a,node b)
{
    int i,j,k;
    node c;
    for(i=0;i>T;
    while(T--)
    {
        cin>>m>>n;
        int i,j;
        node a,b;
        for(i=0;i>a.a[i][j];
                if(i==j)
                    b.a[i][j]=1;
                else b.a[i][j]=0;
            }
        }
        while(n>1)
        {
            if(n%2==1)
            {
                n--;
                b=fix(a,b);
            }
            else
            {
                n/=2;
                a=fix(a,a);
            }
        }
        long long int sum=0;
        a=fix(a,b);
        for(i=0;i

 

你可能感兴趣的:(矩阵幂)