Cod sursa(job #1811216)

Utilizator savulescustefanSavulescu Stefan savulescustefan Data 20 noiembrie 2016 22:24:33
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>

using namespace std;
int i,j,t,x,y,z,a,b,c,n,m[7][7],sol[7][7];
long long f[7][7];
void inmultire (int d[7][7], int e[7][7])
{
    int i,j,k;
    for (i=1;i<=3;i++)
        for (j=1;j<=3;j++)
        {
            f[i][j]=0;
            for (k=1;k<=3;k++)
                f[i][j]=(0LL+f[i][j]+d[i][k]*e[k][j])%666013;
        }
    for (i=1;i<=3;i++)
        for (j=1;j<=3;j++)
        d[i][j]=f[i][j];
}
int main()
{
    freopen ("iepuri.in","r",stdin);
    freopen ("iepuri.out","w",stdout);
    scanf ("%d", &t);
    for (i=1;i<=t;i++)
    {
        scanf ("%d %d %d %d %d %d %d", &x, &y, &z, &a, &b, &c, &n);
        n-=2;
        sol[1][1]=x;
        sol[1][2]=y;
        sol[1][3]=z;
        m[1][1]=0;
        m[1][2]=0;
        m[1][3]=c;
        m[2][1]=1;
        m[2][2]=0;
        m[2][3]=b;
        m[3][1]=0;
        m[3][2]=1;
        m[3][3]=a;
        while (n>0)
        {
            if (n%2==1)
            {
                inmultire(sol,m);
                inmultire(m,m);
            }
            else
                inmultire(m,m);
            n/=2;
        }
        printf ("%d\n", sol[1][3]);
    }
    return 0;
}