Cod sursa(job #806828)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 3 noiembrie 2012 16:28:59
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <cstdio>
#include <string.h>
using namespace std;
ifstream inte("iepuri.in");
ofstream oute("iepuri.out");
#define mod 666013
void init(long long c[3][3])
{
	for (int i=0;i<3;i++)
		for (int j=0; j<3; j++)
			c[i][j]=0;
}



void multiply(long long a[3][3], long long b[3][3],long long c[3][3])
{	int i,j,k;
long long d[3][3];
	//a=b*c;
   init (d);
for (i=0;i<3;i++)
	for(j=0;j<3;j++)
		for (k=0;k<3;k++)
			d[i][j]+=b[i][k]*c[k][j];
   for(i=0;i<3;i++)
	   for(j=0;j<3;j++)
		   a[i][j]=d[i][j];
}
int main()
{
	long long p[3][3];
	long long m[3][3];
	long long t,x,y,z,A,B,C,n,i,val,j,k;
	inte>>t;
	for (i=1;i<=t;i++)
	{
		inte>>x>>y>>z>>A>>B>>C>>n;
		init(p);
		p[1][0]=1;
		p[2][1]=1;
		p[0][0]=A;
		p[0][1]=B;
		p[0][2]=C;
		init(m);
		m[0][0]=m[1][1]=m[2][2]=1;
		
		for(n-=2;n;n>>=1)
		{	if (1&n)
			{multiply(m,m,p);}
		multiply(p,p,p);
		}
			oute<<((m[0][0]*z)%mod+ (m[0][1]*y)%mod + (m[0][2]*x)%mod) % mod;
			oute<<endl;
		/*if (i==1) {for (j=0;j<3;j++)
					{for (k=0;k<3;k++)
						oute<<m[j][k]<<' ';
					oute<<endl;}}*/
	}
	return 0;
}