Cod sursa(job #2384154)

Utilizator cristibogdanPatrascu Cristian cristibogdan Data 20 martie 2019 13:48:00
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
#define MOD 666013
int x,y,z,a,b,c,n,t,k;
long long M[3][3],exp,R[3][3];

void mat_prod( long long  x[3][3],long long y[3][3])
{
    int i,j,k;
    long long aux[3][3];

    for(i=0;i<3;i++)
        for(j=0;j<3;j++)
        {
            aux[i][j]=0;
            for(k=0;k<3;k++)
                {
                    aux[i][j]+=x[i][k]*y[k][j];
                    aux[i][j] = aux[i][j] % MOD;
                }
        }

     for(i=0;i<3;i++)
        for(j=0;j<3;j++)
            y[i][j]=aux[i][j];
}

int main()
{
    f>>t;
    while(t--){
        f>>x>>y>>z>>a>>b>>c>>n;

        memset(R,0,sizeof(R));
        k = n-2;
        R[0][0]=1;
        R[1][1]=1;
        R[2][2]=1;
        while(k!=0){
            memset(M,0,sizeof(M));
             M[0][0]=a; M[0][1]=b; M[0][2]=c;
            M[1][0]=1; M[2][1]=1;
            exp = 1;
            while(exp*2<=k){
                exp=exp*2;
                mat_prod(M,M);
            }
            mat_prod(M,R);
            k-=exp;
        }
        g<<R[0][0]*z+R[0][1]*y+R[0][2]*x<<'\n';

    }

    return 0;
}