NWU_ACM

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
#include <stdio.h>
#define MOD 9937
__int64 a[4][4]=
{
    1,1,0,1,
    1,1,1,0,
    0,1,1,1,
    1,0,1,1
};
__int64 dp[105][5][5];
int main()
{
    __int64 k,l,i,j,n,ans;
    for (k=1;k<102;k++)
    {
        if (k==1)
        {
            for (i=0;i<4;i++)
            { 
                for (j=0;j<4;j++)
                {
                    dp[1][i][j]=a[i][j];
                } 
            }  
        } 
        else
        {
            for (i=0;i<4;i++)
            {
                for (j=0;j<4;j++)
                {
                    dp[k][i][j]=0;
                    for (l=0;l<4;l++)
                    {
                        dp[k][i][j]=(dp[k][i][j]+dp[k-1][i][l]*a[l][j])%MOD;
                    }
                }
            }
        }
    }
    while(scanf("%I64d",&n)!=EOF)
    {
        if (n==0) 
        {
            printf("1/n");
            continue;
        }
        ans=0;
        for (i=0;i<4;i++)
        {
            for (j=0;j<4;j++)
            {
                for (k=0;k<4;k++)
                {
                    for (l=0;l<4;l++)
                    {
                        if (i==j || i==k || i==l || j==k || j==l || k==l) continue;
                        ans=(ans+(dp[n][0][i]*dp[n][1][j]*dp[n][2][k]*dp[n][3][l])%MOD)%MOD;
                    }
                }
            }
        }
        printf("%I64d/n",ans);
    }
    return 0;
}

 

posted on 2017-06-02 17:24  NWU_ACM  阅读(130)  评论(0编辑  收藏  举报