Cod sursa(job #1208466)

Utilizator Kira96Denis Mita Kira96 Data 15 iulie 2014 20:21:59
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream>
#define mod 666013
#define FOR(a,b,c) for(register int a=b;a<=c;++a)
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int T;
long long n,x,y,z,a,b,c,sol[4][4],m[4][4],aux[4][4],S;
int main ()
{
	f>>T;
	while(T--)
	{
		f>>x>>y>>z>>a>>b>>c>>n;
		n-=2;
		FOR(i,1,3)
		FOR(j,1,3)
		m[i][j]=sol[i][j]=0;
		FOR(i,1,3)
		sol[i][i]=1;
		m[1][2]=m[2][3]=1;
		m[3][1]=c; m[3][2]=b; m[3][3]=a;
		while(n)
		{
			if(n&1)
			{
				FOR(i,1,3)
				FOR(j,1,3)
				aux[i][j]=0;
				
				FOR(i,1,3)
				FOR(j,1,3)
				FOR(k,1,3)
				aux[i][j]+=(m[i][k]*sol[k][j])%mod;
				
				FOR(i,1,3)
				FOR(j,1,3)
				sol[i][j]=aux[i][j]%mod;
			}
			
			FOR(i,1,3)
			FOR(j,1,3)
			aux[i][j]=0;
			
			FOR(i,1,3)
			FOR(j,1,3)
			FOR(k,1,3)
			aux[i][j]+=(m[i][k]*m[k][j])%mod;
			
			FOR(i,1,3)
			FOR(j,1,3)
			m[i][j]=aux[i][j]%mod;
			
			n>>=1;
		}
		S=(sol[3][1]*x+sol[3][2]*y+sol[3][3]*z)%mod;
		g<<S<<"\n";
	}
	return 0;
}