Cod sursa(job #1135944)

Utilizator DanutsDanut Rusu Danuts Data 8 martie 2014 16:38:03
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long int a[5][5],b[5][5];
long long int x,y,z,A,B,C,N,T,s;
void inmultire(long long int a[5][5],long long int b[5][5]){
	long long int c[5][5];
	for(int i=1;i<=3;i++){
		for(int j=1;j<=3;j++){
			long long int sum=0;
			for(int k=1;k<=3;k++)
				sum+=((a[i][k] % MOD) * (b[k][j] % MOD) % MOD );
			c[i][j]=sum % MOD;
		}
	}
	for(int i=1;i<=3;i++)
		for(int j=1;j<=3;j++){
			a[i][j]=c[i][j];
		}
}

void solve(int N){
	for(;N; N >>=1){
		if(N & 1)
			inmultire(a,b);
		inmultire(b,b);
	}
	
	s=(a[1][1]*z)%MOD + (a[1][2]*y)%MOD + (a[1][3]*x)%MOD;
	g<<s%MOD<<'\n';
}
int main (){
	f>>T;
	
	for(int i=1;i<=T;i++){
		
		for(int i=1;i<=3;i++)
			for(int j=1;j<=3;j++)
				a[i][j]=b[i][j]=0;
			
		f>>x>>y>>z>>A>>B>>C>>N;
		a[1][1]=1,a[2][2]=1,a[3][3]=1;
		b[1][1]=A,b[1][2]=B,b[1][3]=C;
		b[2][1]=1,b[3][2]=1;
		solve(N-2);
	}
	return 0;
}