Pagini recente » Cod sursa (job #1736080) | Cod sursa (job #2009649) | Cod sursa (job #2522485) | Cod sursa (job #2071214) | Cod sursa (job #644297)
Cod sursa(job #644297)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
const int mod = 666013;
int T , D[3] , M[3][3] , A , B , C , N;
void mult(int A[3][3],int B[3][3],int C[3][3])
{
for(int i = 0;i<3;++i)
for(int j = 0;j<3;++j)
for(int k = 0;k<3;++k)
C[i][j] +=A[i][k] * B[k][j]%mod;
}
void lgpow(int p)
{
int aux[3][3] , a[3][3];
memcpy(a,M,sizeof(M));
for(;p;p>>=1) {
if(p & 1)
{
p--;
memset(aux,0,sizeof(aux));
mult(M,a,aux);
memcpy(M,aux,sizeof(aux));
}
memset(aux,0,sizeof(aux));
mult(a,a,aux);
memcpy(a,aux,sizeof(aux));
}
}
int main()
{
for(fin>>T;T;T--)
{
fin>>D[0]>>D[1]>>D[2];
fin>>A>>B>>C>>N;
M[0][0] = 0 , M[0][1] = 1 , M[0][2] = 0;
M[1][0] = M[1][1] = 0 , M[1][2] = 1;
M[2][0] = C , M[2][1] = B , M[2][2] = A;
lgpow(N-1);
int ans = (1ll*M[0][0] * D[0]%mod + 1ll*M[0][1] * D[1]%mod + 1ll* M[0][2]*D[2]%mod)%mod;
fout<< ans <<'\n';
}
return 0;
}