tjut 3509

原创 2016年08月30日 10:32:51
#include <cstdio>  
#include <iostream>  
#include <cstring>  
  
using namespace std;  
typedef long long LL;  
  
const int N=55;  
LL x[N][N],y[N][N],s[N][N];  
LL A[N],B[N],F1[N],F2[N],tmp;  
int f1,f2,a,b,K,n,m;  
int i,j,k,t;  
  
void mul(LL x[N][N],LL y[N][N])  
{  
    int i,j,k;  
    for(i=0; i<K+2; ++i)  
    {  
        for(j=0; j<K+2; ++j)  
        {  
            for(s[i][j]=k=0; k<K+2; ++k)  
                s[i][j]+=x[i][k]*y[k][j]%m;  
            s[i][j]%=m;  
        }  
    }  
    for(i=0; i<K+2; ++i)  
        for(j=0; j<K+2; ++j)  
            x[i][j]=s[i][j];  
}  
  
int main()  
{  
    cin>>t;  
    while(t--)  
    {  
        cin>>f1>>f2>>a>>b>>K>>n>>m;  
        A[0]=B[0]=F1[0]=F2[0]=1;  
        for(i=1; i<K+2; ++i)  
        {  
            A[i]=A[i-1]*a%m;  
            B[i]=B[i-1]*b%m;  
            F1[i]=F1[i-1]*f1%m;  
            F2[i]=F2[i-1]*f2%m;  
        }  
        memset(x,0,sizeof(x));  
        memset(y,0,sizeof(y));  
        for(i=0; i<K+2; ++i)x[i][i]=1;  
        y[0][0]=y[0][1]=1;  
        for(i=1; i<K+2; ++i)  
        {  
            for(j=1,tmp=1,k=K-i+2; k--; ++j)  
            {  
                y[i][j]=(tmp%m)*A[k]%m;  
                y[i][j]=(y[i][j]*B[j-1])%m;  
                tmp*=k;  
                tmp/=j;  
            }  
        }  
        --n;  
        while(n)  
        {  
            if(n&1)mul(x,y);  
            mul(y,y);  
            n>>=1;  
        }  
        tmp=F1[K]*x[0][0]%m;  
        for(i=1; i<K+2; ++i)  
        {  
            tmp+=((F2[K-i+1]*F1[i-1])%m)*x[0][i];  
            tmp%=m;  
        }  
        cout<<tmp<<endl;  
    }  
    return 0;  
}  


版权声明:本文为博主原创文章,未经博主允许不得转载。

tjut 5412

#include using namespace std; const int Maxn=100020; int nq; int ty[Maxn*3],ql[Maxn*3],qr[Maxn*3],qk...

hdu 3509 Buge's Fibonacci Number Problem(矩阵乘法+二项式)

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3509 Buge's Fibonacci Number Problem Time Limit: ...

HDU 3509解题报告

Buge's Fibonacci Number Problem Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/3276...

三星g3509i刷机工具

  • 2015年05月09日 16:29
  • 2.25MB
  • 下载

PAN3509DH 文档

  • 2013年01月19日 20:27
  • 653KB
  • 下载

HDU3509(构造矩阵)

题目:Buge's Fibonacci Number Problem   #include #include #include using namespace std; const int ...

hdu 3509(矩阵快速幂)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3509; 题意:按照所给的最后一个公式推导,然后矩阵快速幂 把图中的矩阵最上面的0改成1,最后的f(...

hdu 3509 Buge's Fibonacci Number Problem(二项分布+矩阵连乘)

Buge's Fibonacci Number Problem Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/3276...
  • fp_hzq
  • fp_hzq
  • 2012年07月21日 16:49
  • 1251

Bzoj3509:[CodeChef] COUNTARI:分块+FFT

题目链接:3509:[CodeChef] COUNTARI 题目要求求出(i,j,k)的对数满足i 式子变形得到a[j]*2=a[i]+a[k]; 考虑对于每个a[j]求出左边的i和右边的k 发现这个...

POJ-3509-Rotating Rings

这个题是给你一个矩阵,让你判断该矩阵是否可经过每层转换,转换成标准矩阵。 思路: 逐层判断即可~算模拟吧~ 代码: #include #include #include using names...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:tjut 3509
举报原因:
原因补充:

(最多只允许输入30个字)