Cod sursa(job #1554254)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 21 decembrie 2015 10:43:44
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<cstdio>
#include<cstring>
#define MOD 666013

using namespace std;

int a[5][5],aux[5][5],b[5],k,i,t,n,c[5][5];

void inm(int a[5][5],int b[5][5])
{
    int i,j,k;
    for(i=1;i<=3;i++)
    {
        for(j=1;j<=3;j++)
        {
            aux[i][j]=0;
            for(k=1;k<=3;k++)
            {
                aux[i][j]+=(1LL*a[i][k]*b[k][j])%MOD;
                aux[i][j]%=MOD;
            }
        }
    }
    memcpy(a,aux,sizeof(aux));
}

void lgput(int exp)
{
    while(exp)
    {
        if(exp&1)
        {
            inm(a,c);
        }
        inm(c,c);
        exp/=2;
    }
}

int main()
{
    freopen("iepuri.in","r",stdin);
    freopen("iepuri.out","w",stdout);
    scanf("%d",&t);
    for(i=1;i<=t;i++)
    {
        memset(a,0,sizeof(a));
        a[1][2]=1;
        a[2][3]=1;
        scanf("%d%d%d%d%d%d%d",&b[1],&b[2],&b[3],&a[1][1],&a[2][1],&a[3][1],&n);
        memcpy(c,a,sizeof(a));
        lgput(n-3);
        k=(1LL*b[3]*a[1][1]+1LL*b[2]*a[2][1]+1LL*b[1]*a[3][1])%MOD;
        printf("%d\n",k);
    }
    return 0;
}