Cod sursa(job #3351294)

Utilizator YannYann Spataru Yann Data 18 aprilie 2026 14:24:07
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>

using namespace std;
	ifstream cin("iepuri.in");
	ofstream cout("iepuri.out");
	int rez[4][4],baza[4][4];
void copierematricerez(int nm[4][4])
{
	for(int y=1;y<=3;y++)
		for(int x=1;x<=3;x++)
			rez[y][x]=nm[y][x];
}
void copierematricebaza(int nm[4][4])
{
	for(int y=1;y<=3;y++)
		for(int x=1;x<=3;x++)
			baza[y][x]=nm[y][x];
}
void putere(int exp)
{
	int aux[4][4];
	while(exp>0) {
		for(int y=1;y<=3;y++)
			for(int x=1;x<=3;x++)
				aux[y][x]=0;
		if(exp%2==0) {
			for(int y=1;y<=3;y++)
				for(int x=1;x<=3;x++)
					for(int k=1;k<=3;k++)
						aux[y][x]+=baza[k][x]*baza[y][k];
			exp/=2;
			copierematricebaza(aux);
		}
		else {
			for(int y=1;y<=3;y++)
				for(int x=1;x<=3;x++)
					for(int k=1;k<=3;k++)
						aux[y][x]+=baza[y][k]*rez[k][x];
			exp--;
			copierematricerez(aux);
		}
	}
}
int main()
{
	int t,n,a,b,c,x,y,z;
	cin>>t;
	for(int n2=1;n2<=t;n2++) {
		cin>>x>>y>>z>>a>>b>>c>>n;
		baza[1][1]=baza[1][3]=baza[2][1]=baza[2][2]=0;
		baza[1][2]=baza[2][3]=1;
		baza[3][1]=c;
		baza[3][2]=b;
		baza[3][3]=a;
		rez[1][2]=rez[1][3]=rez[2][1]=rez[2][3]=rez[3][1]=rez[3][2]=0;
		rez[1][1]=rez[2][2]=rez[3][3]=1;
		putere(n);
		cout<<rez[3][3]<<'\n'; /// ???
	}
    return 0;
}