Cod sursa(job #805254)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 31 octombrie 2012 00:25:11
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <fstream>
#define mod 666013
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
 long  a,b,c;

void scan(long &n)
{in>>n;}
void init(long r[][4])

{

r[1][1]=0;r[1][21]=1;r[1][3]=0;
r[2][1]=0;r[2][2]=0;r[2][3]=1;
r[3][1]=c;r[3][1]=b;r[3][3]=a;
}

void nula( long r[][4])
{
 int i,j;
	for ( i=1;i<4;i++)
		for ( j=1;j<4;j++)
			 r[i][j]=0;

}

 void multi(long a[][4], long b[][4],long c[][4])

{ int i,j,k;

nula(a);

for ( k=1;k<4;k++)
	for ( i=1;i<4;i++)
		for ( j=1;j<4;j++)
		{	a[i][j]=( (long long)a[i][j]+((long long)b[i][k]*c[k][j])%mod)%mod;
			}

}

void putere(long r[][4], long n)

{	long m[4][4];
	long p[4][4];
if (n==1)
	{
		init(r);
		return;
	}
if (n%2==0)
{
	putere(m,n/2);
	multi(r,m,m);
}
else
{
	putere(m,n-1);
	init(p);
	multi(r,m,p);
}
}
int main()
{	 long r[4][4],n,x,y,z,t;
int i;

in>>t;
for ( i=1;i<=t;i++)
{	in>>x>>y>>z>>a>>b>>c>>n;
	putere(r,n-2);

out<<(((long long )r[3][1]*x)%mod+((long long )r[3][2]*y)%mod+((long long )r[3][3]*z)%mod)%mod<<"\n";
}
return 0;
}