Pagini recente » Cod sursa (job #2856033) | Cod sursa (job #2442870) | Cod sursa (job #86487) | Cod sursa (job #2663448) | Cod sursa (job #2719582)
#include <fstream>
#include <cstring>
#define mod 666013
using namespace std;
long long m[4][4];
long long aux[4][4];
long long sol[4][4];
long long i,j,n,k,q,a,b,c,x,y,z;
void copiere (long long a[4][4], long long b[4][4]) {
for (long long i=1;i<=3;i++) {
for (long long j=1;j<=3;j++) {
a[i][j]=b[i][j];
}
}
}
void inmultire (long long sol[4][4], long long a[4][4], long long b[4][4]) {
for (long long i=1;i<=3;i++) {
for (long long j=1;j<=3;j++) {
sol[i][j]=0;
for (long long k=1;k<=3;k++) {
sol[i][j]+=a[i][k]*b[k][j];
sol[i][j]%=mod;
}
}
}
}
int main() {
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
for (fin>>q;q--;) {
fin>>x>>y>>z>>a>>b>>c>>n;
///0=x
///1=y
///2=z
///3=z*a+y*b+x*c
memset(m,0,sizeof(m));
memset(sol,0,sizeof(sol));
m[1][2]=1;
m[2][3]=1;
m[3][1]=c;
m[3][2]=b;
m[3][3]=a;
sol[1][1]=sol[2][2]=sol[3][3]=1;
while (n) {
if (n%2==1) {
copiere(aux,sol);
inmultire (sol,aux,m);
}
copiere(aux,m);
inmultire(m,aux,aux);
n/=2;
}
fout<<(1LL*x*sol[1][1]+1LL*y*sol[1][2]+1LL*z*sol[1][3])%mod<<"\n";
}
return 0;
}