Cod sursa(job #430962)

Utilizator vladbBogolin Vlad vladb Data 31 martie 2010 15:02:44
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>

#define mod 666013

using namespace std;

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

int t,x,y,z,a,b,c,n;
int q[3][3],sol[3][3];

void inm(int x[3][3],int y[3][3])
{	int s[3][3],i,j,k;
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			s[i][j]=0;
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			for(k=0;k<3;k++)
				s[i][j]=(s[i][j]+x[i][k]*y[k][j])%mod;
	for(i=0;i<3;i++)
		for(j=0;j<3;j++)
			x[i][j]=s[i][j];
}

int main()
{	int i;
	fin>>t;
	for(i=1;i<=t;i++)
	{	fin>>x>>y>>z>>a>>b>>c>>n;
		for(int k=0;k<3;k++)
			for(int j=0;j<3;j++)
			{	sol[k][j]=0;
				q[k][j]=0;
			}
		q[0][1]=q[1][2]=1;
		q[2][0]=c;
		q[2][1]=b;
		q[2][2]=a;
		sol[0][0]=sol[1][1]=sol[2][2]=1;
		while(n)
		{	if(n&1)
				inm(sol,q);
			inm(q,q);
			n/=2;
		}
		fout<<((sol[0][0]*x)%mod+(sol[0][1]*y)%mod+(sol[0][2]*z)%mod)%mod<<"\n";
	}
	fin.close();
	fout.close();
	return 0;
}