Cod sursa(job #804910)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 30 octombrie 2012 17:36:23
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <fstream>

using namespace std;
#define mod 666013
long long m[3][3]; long long s[3][3];
long long n;

void inmulteste(long long u[][3],long long t[][3],long long r[3][3])
{	long long f,j,k;
	long long d[3][3];
	
	for (f=0;f<3;f++)
		for(j=0;j<3;j++)
		{ d[f][j]=0;
			for(k=0;k<3;k++)
				d[f][j]+=((u[f][k]%mod) * (t[k][j])%mod) % mod;
		}
	for (f=0;f<3;++f)
		for (j=0;j<3;++j)
			r[f][j]=d[f][j];
}



void putere(long long p)
{ 
	for(;p;p=p/2)
	{
		if (p %2==1)
				inmulteste(s,m,s);   
		inmulteste(m,m,m);
	}
}

int main()
{	long long x,y,z,a,b,c,i,j,t,k;
	ifstream f("iepuri.in");
	ofstream g("iepuri.out");
	f>>t;
	for (i=1;i<=t;++i)
	{
		f>>a>>b>>c>>x>>y>>z>>n;
		m[0][0]=0;m[0][1]=1;m[0][2]=0;
		m[1][0]=0;m[1][1]=0;m[1][2]=1;
		m[2][0]=c%mod;m[2][1]=b%mod;m[2][2]=a%mod;
		for (j=0;j<=2;++j)
			for(k=0;k<=2;++k)
			{
				if (j==k) s[j][j]=1;
				else s[j][k]=0;
			}
		putere(n);
		k=((s[0][0]*x)%mod+(s[0][1]*y)%mod +(s[0][2] *z)%mod) % mod; 
		g<<k<<endl;
			
	}
}