Pagini recente » Cod sursa (job #2801185) | Cod sursa (job #1908380) | Cod sursa (job #1358377) | Cod sursa (job #252975) | Cod sursa (job #3159195)
#include <bits/stdc++.h>
#pragma optimize GCC ("Ofast")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
///#include <tryhardmode>
///#include <GODMODE::ON>
using namespace std;
ifstream fin ("iepuri.in");
ofstream fout ("iepuri.out");
const int MOD=666013;
const int NMAX=3;
int mat[NMAX][NMAX];
int aux[NMAX][NMAX];
int init[NMAX][NMAX];
int x,y,z,a,b,c,n;
void inmultire(int a[3][3],int b[3][3])
{
int x,i,j;
int aux2[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
aux2[i][j]=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(x=0;x<3;x++)
aux2[i][j]=(aux2[i][j]+a[i][x]*b[x][j])%MOD;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
aux[i][j]=aux2[i][j];
}
void lgput(int b)
{
if(b==0)
return ;
else
{
if(b%2==0)
{
lgput(b/2);
inmultire(aux,aux);
}
else
{
lgput(b/2);
inmultire(aux,aux);
inmultire(mat,aux);
}
}
}
void reset()
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
init[i][j]=mat[i][j]=aux[i][j]=0;
aux[0][0]=aux[1][1]=aux[2][2]=1;
mat[0][2]=c;
mat[1][2]=b;
mat[2][2]=a;
mat[1][0]=mat[2][1]=1;
init[0][0]=x;
init[0][1]=y;
init[0][2]=z;
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
int t;
fin>>t;
while(t--)
{
fin>>x>>y>>z>>a>>b>>c>>n;
reset();
n-=2;
lgput(n);
inmultire(init,aux);
fout<<aux[0][2]<<"\n";
}
fin.close();
fout.close();
return 0;
}