Cod sursa(job #1703190)

Utilizator LucianTLucian Trepteanu LucianT Data 16 mai 2016 15:38:58
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 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]%MOD;
}
int main()
{
    freopen("iepuri.in","r",stdin);
    freopen("iepuri.out","w",stdout);
    scanf("%d",&t);
    while(t--)
    {
        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;
        while(n)
        {
            if(n%2)
                mul(sol,arr);
            mul(arr,arr);
            n/=2;
        }
        printf("%d\n",(sol[1][3])%MOD);
    }
    return 0;
}