Cod sursa(job #1822079)

Utilizator tqmiSzasz Tamas tqmi Data 4 decembrie 2016 10:54:48
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <cstring>
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int N[5][5];
int Z[5][5];
int K,T;

void mult(int A[5][5], int B[5][5])
{
    int C[5][5];
    memset(C,0,sizeof(C));
    for(int i=1;i<=3;++i)
    {
        for(int j=1;j<=3;++j)
        {
            long long s=0;
            for(int k=1;k<=3;k++)
            {
                s+=1LL*A[i][k]*B[k][j];
            }
            C[i][j]=s%MOD;
        }
    }
    memcpy(A,C,sizeof(C));
}

void solve()
{
    while(K)
    {
        if(K&1)
        {
            mult(N,Z);
        }
        K=K>>1;
        mult(Z,Z);
    }
}

void print()
{
    fout<<N[1][2]<<"\n";
}

void read()
{
    fin>>T;
    for(int i=1;i<=T;i++)
    {
        memset(N,0,sizeof(N));
        memset(Z,0,sizeof(Z));
        int X,Y,z,A,B,C;
        fin>>X>>Y>>z>>A>>B>>C>>K;
        K--;
        N[1][1]=X;
        N[1][2]=Y;
        N[1][3]=z;
        Z[1][3]=C;
        Z[2][1]=1;
        Z[3][2]=1;
        Z[2][3]=B;
        Z[3][3]=A;
        solve();
        print();
    }
}

int main()
{
    read();
    return 0;
}