Cod sursa(job #2619013)

Utilizator darkeagleDaniel Popescu darkeagle Data 26 mai 2020 18:42:52
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.89 kb
#include <bits/stdc++.h>
using namespace std;

int t,x1, x2, x3, a, b, c;
void prod(long long  a1[4][4], int r) {
int i, j ,k, y, s1, s2;
long long  mult[4][4], mult1[4][4];

 	 for(i = 1; i <= 3; i++)
        for(j = 1; j <= 3; j++)
        {
            mult[i][j]= a1[i][j];
        }

        for(i = 1; i <= 3; i++)
        for(j = 1; j <= 3; j++)
        {
            mult1[i][j] =  0;
        }

for( y =1; y <= r; y++) {
        for( i = 1; i <= 3; i++)
        {for( j = 1; j <= 3; j++)
        { 
             
mult1[i][j] = (a1[i][1]%666013) * ((mult[1][j])%666013);
mult1[i][j] = ((mult1[i][j]%666013) + (a1[i][2]%666013) * (mult[2][j]%666013)%666013)%666013;
mult1[i][j] = ((mult1[i][j]%666013) + (a1[i][3]%666013) * (mult[3][j]%666013)%666013)%666013;

            
}
}




         for(s1 = 1; s1 <= 3; s1++)
        for(s2 = 1; s2 <= 3; s2++)
        {
            mult[s1][s2]= mult1[s1][s2]%666013;
        }
         for(s1 = 1; s1 <= 3; s1++)
        for(s2 = 1; s2 <= 3; s2++)
        {
            mult1[s1][s2] = 0;
        }

 


}
for(i=1;i<=3;i++)
 {
 	for(j=1;j<=3;j++) {
 		a1[i][j] = mult[i][j]%666013;

 	}
 }


 }
int main() {

freopen("iepuri.in", "r", stdin);
freopen("iepuri.out", "w", stdout);
scanf("%d",&t);
int r, r1, i,j;
long long  mult[4][4], a1[4][4];
int y;
for(int y = 1; y <= t;y++) {
	scanf("%d %d %d %d %d %d %d", &x1, &x2, &x3, &a, &b, &c, &r);
	  for(i = 1; i <= 3; ++i)
        for(j = 1; j <= 3; ++j)
        {
            mult[i][j]=0;
        }
	 for(i = 1; i <= 3; ++i)
        for(j = 1; j <= 3; ++j)
        {
            a1[i][j]=0;
        }
        a1[1][1] = a;
        a1[1][2] = b;
        a1[1][3] = c;
        a1[2][1] = 1;
        a1[3][2] = 1;

        prod(a1,r-3);
 

        int t1;
        t1 = (a1[1][1]*x3)%666013;
        t1 = (t1 + (a1[1][2]*x2)%666013)%666013; 
        t1 = (t1 + (a1[1][3]*x1)%666013)%666013;
         


	printf("%d\n",t1);
}



	return 0;
}