Pagini recente » Cod sursa (job #1519063) | Cod sursa (job #2149750) | Cod sursa (job #132283) | Cod sursa (job #200278) | Cod sursa (job #1795749)
#include <iostream>
#include <fstream>
#define MOD 666013
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
int n,x,y,z,a,b,c,t;
class matrix{
public:
long long int a[4][4];
int l,c;
};
matrix rec,m;
matrix inmultire(matrix a,matrix b)
{
matrix r;
r.l = a.l;
r.c = b.c;
for(int i=1;i<=a.l;i++)
for(int j=1;j<=b.c;j++)
r.a[i][j] = 0;
for(int i=1;i<=a.l;i++)
for(int j=1;j<=b.c;j++)
for(int k=1;k<=a.c;k++)
r.a[i][j]+= (1LL*a.a[i][k]*b.a[k][j])%MOD;
return r;
}
matrix ridicare(matrix a,int p)
{
if(p==1)
return a;
else
{
if(p%2==0)
{
matrix aux = ridicare(a,p/2);
return inmultire(aux,aux);
}
else
return inmultire(a,ridicare(a,p-1));
}
}
void ini_m()
{
m.l = 3;
m.c = 3;
m.a[1][1] = 0;
m.a[1][2] = 0;
m.a[1][3] = c;
m.a[2][1] = 1;
m.a[2][2] = 0;
m.a[2][3] = b;
m.a[3][1] = 0;
m.a[3][2] = 1;
m.a[3][3] = a;
}
void ini_rec()
{
rec.l = 1;
rec.c = 3;
rec.a[1][1] = x;
rec.a[1][2] = y;
rec.a[1][3] = z;
}
int main()
{
in>>t;
for(int i=1;i<=t;i++)
{
in>>x>>y>>z>>a>>b>>c>>n;
ini_m();
m = ridicare(m,n-2);
ini_rec();
rec = inmultire(rec,m);
out<<rec.a[1][3]%MOD<<"\n";
}
in.close();
out.close();
return 0;
}