Pagini recente » Cod sursa (job #1859757) | Cod sursa (job #3280549) | Cod sursa (job #3266968) | Cod sursa (job #816632) | Cod sursa (job #804090)
Cod sursa(job #804090)
#include <fstream>
#define mod 666013
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
long a,b,c;
void scan(long &n)
{
in>>n;
}
void init(long t[][4])
{
t[1][1]=0;
t[1][2]=1;
t[1][3]=0;
t[2][1]=0;
t[2][2]=0;
t[2][3]=1;
t[3][1]=c;
t[3][2]=b;
t[3][3]=a;
}
void setzero(long t[][4])
{
for (int i=1;i<=3;i++)
for (int j=1;j<=3;j++)
t[i][j]=0;
}
void mult(long a[][4],long b[][4],long c[][4])
{
setzero(a);
for (int k=1;k<=3;k++)
for (int i=1;i<=3;i++)
for (int j=1;j<=3;j++)
{
a[i][j]=((long long)a[i][j]+((long long)b[i][k]*c[k][j])%mod)%mod;
}
}
void putere(long t[][4],long n)
{
long m[4][4];
long u[4][4];
if (n==1)
{
init(t);
return;
}
if (n%2==0)
{
putere(m,n/2);
mult(t,m,m);
}
else
{
putere(m,n-1);
init(u);
mult(t,m,u);
}
}
int main()
{
long t[4][4],n,x,y,z,set;
in>>set;
for (int i=1;i<=set;i++)
{
in>>x>>y>>z>>a>>b>>c>>n;
putere(t,n-2);
out<<(((long long)t[3][1]*x)%mod+((long long)t[3][2]*y)%mod+((long long)t[3][3]*z)%mod)%mod<<"\n";
}
return 0;
}