Cod sursa(job #3179708)

Utilizator cosmin395dimofte cosmin cosmin395 Data 4 decembrie 2023 01:21:38
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
long long v[3][3],i,j,n,a[3][3];
void pmat(int x,int y,int z,int nr)
{
	int k;
	while (nr)
	{
		if (nr % 2 == 1) // v=v*a
		{
			long long c[3][3] = { 0,0,0,0,0,0,0,0,0 };
			for (i = 0; i < 3; i++) 
				for (j = 0; j < 3; j++)
					for (k = 0; k < 3; k++)
						c[i][j] += v[i][k] * a[k][j] % 666013;
				memcpy(v, c, sizeof(c));
				/*cout << "NR = " << nr << endl;
				for (i = 0; i < 3; i++) {
					for (j = 0; j < 3; j++)
						cout << v[i][j] << ' ';
					cout << endl;
				}*/
		}

		long long c[3][3] = { 0,0,0,0,0,0,0,0,0 };  //a=a*a
		for (i = 0; i < 3; i++) 
			for (j = 0; j < 3; j++)
				for (k = 0; k < 3; k++)
					c[i][j] += a[i][k] * a[k][j] % 666013;
		memcpy(a, c, sizeof(c));
		nr /= 2;
	}
}
int main()
{
	int t;
	
	cin >> t;
	while (t--)
	{
		int x, y, z, a1, b, c;
		cin >> x >> y >> z >> a1 >> b >> c >> n;

			v[0][0] = 0;	v[0][1] = 0;	v[0][2] = c;
			v[1][0] = 1;	v[1][1] = 0;    v[1][2] = b;
			v[2][0] = 0;	v[2][1] = 1;	v[2][2] = a1;

		for (i = 0; i < 3; i++)
			for (j = 0; j < 3; j++)
				a[i][j] = v[i][j];

		pmat(x, y, z, n-3);
		int k = x * v[0][2] + y * v[1][2] + z * v[2][2];
		cout << k << endl;
		
	}
}