Cod sursa(job #1554250)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 21 decembrie 2015 10:37:47
Problema Iepuri Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 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)
{
    int i;
    for(i=0;(1<<i)<=exp;i++)
    {
        if(exp&(1<<i))
        {
            inm(a,c);
        }
        inm(c,c);
    }
}

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;
}