Cod sursa(job #2236034)

Utilizator andrei13Paval Andrei andrei13 Data 27 august 2018 20:56:36
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("iepuri.in");
ofstream g("iepuri.out");

int x,y,z,a,b,c,n,t;

void inm(int tbi1[3][3],int tbi2[3][3])
{
    int tbi3[3][3];
    for(int i=0; i<=2; ++i)
        for(int j=0; j<=2; ++j)
        {
            tbi3[i][j]=0;
            for(int k=0; k<=2; ++k)
                tbi3[i][j]=(tbi3[i][j]+tbi1[i][k]*tbi2[k][j])%666013;
        }
    for(int i=0; i<=2; ++i)
        for(int j=0; j<=2; ++j)
            tbi1[i][j]=tbi3[i][j];
}
void rez(int mat[3][3],int p)
{
    int aux[3][3];
    for(int i=0; i<=2; ++i)
        for(int j=0; j<=1; ++j)
            aux[i][j]=0;
    aux[1][0]=aux[2][1]=1;
    aux[0][2]=c;
    aux[1][2]=b;
    aux[2][2]=a;
    for(int i=0; i<=2; ++i)
        for(int j=0; j<=2; ++j)
            mat[i][j]=0;
    mat[0][0]=mat[1][1]=mat[2][2]=1;


    while(p)
    {
        if(p%2)
            inm(mat,aux);
        inm(aux,aux);
        p/=2;
    }
}
int main()
{
    f>>t;
    while(t--)
    {
        f>>x>>y>>z>>a>>b>>c>>n;
        int aux[3][3];
        rez(aux,n-2);
        g<<(1LL*aux[0][2]*x+1LL*aux[1][2]*y+1LL*aux[2][2]*z)%666013<<"\n";
    }

    return 0;
}