Cod sursa(job #1703189)

Utilizator LucianTLucian Trepteanu LucianT Data 16 mai 2016 15:35:27
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>
#define MOD 666013
using namespace std;
int sol[4][4],arr[4][4];
int n,t,a,b,c,x,y,z;
void mul(int a[4][4],int b[4][4])
{
    long long c[4][4];
    int i,j,k;
    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
        {
            c[i][j]=0;
            for(k=1;k<=3;k++)
                c[i][j]=(c[i][j]+(a[i][k]%MOD)*(b[k][j]%MOD))%MOD;
        }
    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
        a[i][j]=c[i][j];
}
void lgput(int k)
{
    while(k)
    {
        if(k%2)
            mul(sol,arr);
        mul(arr,arr);
        k/=2;
    }
}
int main()
{
    freopen("iepuri.in","r",stdin);
    freopen("iepuri.out","w",stdout);
    scanf("%d",&t);
    for(int test=1;test<=t;test++)
    {
        scanf("%d %d %d %d %d %d %d",&x,&y,&z,&a,&b,&c,&n);
        memset(sol,0,sizeof(sol));
        memset(arr,0,sizeof(arr));
        n-=2,sol[1][1]=x,sol[1][2]=y,sol[1][3]=z;
        arr[1][3]=c,arr[2][1]=1,arr[2][3]=b,arr[3][2]=1,arr[3][3]=a;
        lgput(n);
        printf("%d\n",(sol[1][3])%MOD);
    }
    return 0;
}