Cod sursa(job #2286599)

Utilizator PredescuSebastianIonPredescu Sebastian Ion PredescuSebastianIon Data 20 noiembrie 2018 15:57:03
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int sol[102];
const int MOD=666013;
long long a1[4][4],a2[4][4];
int x,y,z,a,b,c,n,t;
void inmultire (long long a[4][4],long long b[4][4])
{
    long long aux[4][4];
    for(int i=1;i<=3;i++)
        for(int j=1;j<=3;j++)
            aux[i][j]=0;
    for(int i=1;i<=3;i++)
        for(int j=1;j<=3;j++)
            for(int k=1;k<=3;k++)
                aux[i][j]=1LL*(aux[i][j]+a[i][k]*b[k][j]%MOD)%MOD;
    for(int i=1;i<=3;i++)
        for(int j=1;j<=3;j++)
            a[i][j]=aux[i][j];
}
void put(int k)
{
    while(k)
    {
        if(k&1)
            inmultire(a2,a1);
        inmultire(a1,a1);
        k>>=1;
    }
}
int main()
{
    fin>>t;
    for(int T=1;T<=t;T++)
    {
        fin>>x>>y>>z>>a>>b>>c>>n;
        a1[1][1]=a1[1][2]=a1[2][2]=a1[3][1]=0;
        a1[2][1]=a1[3][2]=1;
        a1[1][3]=c;
        a1[2][3]=b;
        a1[3][3]=a;
        for (int i=1;i<=3;i++)
            for (int j=1;j<=3;j++)
                a2[i][j]=a1[i][j];
        put(n-3);
        fout<<1LL*(1LL*a2[1][3]*x+1LL*a2[2][3]*y+1LL*a2[3][3]*z)%MOD<<"\n";
    }
    return 0;
}