Cod sursa(job #2370886)

Utilizator ciutanpCiuta Andrei Calin ciutanp Data 6 martie 2019 14:19:29
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<bits/stdc++.h>
#define mod 666013
using namespace std;

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

long long sol[4][4],mat[4][4];
int x,y,z,a,b,c,n;

void mult(long long a[4][4],long long b[4][4])
{
    long long copie[4][4];
    memset(copie,0,sizeof(copie));
    for(int i=1;i<=3;++i)
        for(int j=1;j<=3;++j)
            for(int k=1;k<=3;++k)
                copie[i][j]=(copie[i][j]+a[i][k]*b[k][j])%mod;
    for(int i=1;i<=3;++i)
        for(int j=1;j<=3;++j)
            a[i][j]=copie[i][j];
}

void inm(int put)
{
    memset(sol,0,sizeof(sol));
    sol[1][1]=sol[2][2]=sol[3][3]=1;
    while(put)
    {
        if(put&1)
        {
            mult(sol,mat);
        }
        mult(mat,mat);
        put>>=1;
    }

}

int main()
{
    int t;
    f>>t;
    while(t--)
    {


        f>>x>>y>>z>>a>>b>>c>>n;
        memset(mat,0,sizeof(mat));
        mat[1][3]=c;
        mat[2][1]=mat[3][2]=1;
        mat[2][3]=b;
        mat[3][3]=a;
        inm(n-2);
        g<<(x*sol[1][3]+y*sol[2][3]+z*sol[3][3])%mod<<'\n';
    }
}