Cod sursa(job #1817597)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 28 noiembrie 2016 08:19:46
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<iostream>
#include<fstream>
#include<cstring>
#define MOD 666013
using namespace std;

ifstream fin("iepuri.in");
ofstream fout("iepuri.out");

int T;
int A,B,C,X,Y,Z,N;
int V[5][5],Sol[5][5];

void Multiply(int A[5][5],int B[5][5])
{
    int C[5][5];

    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));
}

int main()
{
	fin>>T;

	while(T--)
	{
		memset(Sol,0,sizeof(Sol));
		memset(V,0,sizeof(V));

        fin>>X>>Y>>Z;
        fin>>A>>B>>C;
        fin>>N;

        Sol[1][1] = X;
        Sol[1][2] = Y;
        Sol[1][3] = Z;

        V[2][1] = V[3][2] = 1;
        V[1][3] = C;
        V[2][3] = B;
        V[3][3] = A;

        while(N)
		{
			if(N&1)
			{
				Multiply(Sol,V);
			}

			Multiply(V,V);

			N >>= 1;
		}

        fout<<Sol[1][1]<<"\n";
	}

	fin.close();
	fout.close();
	return 0;
}