机器人的舞蹈

#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;
}
原文地址:https://www.cnblogs.com/NWUACM/p/6934345.html