Pagini recente » Cod sursa (job #3133085) | Cod sursa (job #1370589) | Cod sursa (job #1638207) | Cod sursa (job #2163729) | Cod sursa (job #1739)
Cod sursa(job #1739)
#include <stdio.h>
#include <string.h>
#define M 666013
int N, X, Y, Z, A, B, C;
int rez[4][4], power[4][4];
int nrb = 0;
FILE *fout;
void Mul(int A[4][4], int B[4][4], int C[4][4])
{
int a[4][4];
for (int i = 1; i <= 3; i++)
for (int j = 1; j <= 3; j++)
{
int s = 0;
for (int k = 1; k <= 3; k++)
s += (B[i][k] * C[k][j]) % M;
a[i][j] = s % M;
}
}
int main()
{
FILE *fin = fopen("iepuri.in", "rt");
fout = fopen("iepuri.out", "wt");
int T = 0;
fscanf(fin, "%d", &T);
while (T)
{
T--;
nrb = 0;
fscanf(fin, "%d %d %d %d %d %d %d", &X, &Y, &Z, &A, &B, &C, &N);
power[1][2] = power[2][3] = 1; power[1][1] = power[1][3] = power[2][1] = power[2][2] = 0;
power[3][1] = C; power[3][2] = B; power[3][3] = A;
for (int bit = 0; bit <= 32; bit++)
{
if (N & (1 << bit))
{
if (nrb == 0)
memcpy(rez, power, sizeof(power)), nrb++;
else
{
Mul(rez, rez, power);
nrb++;
}
}
Mul(power, power, power);
}
int In = (rez[1][1] * X)% M + (rez[1][2] * Y) % M + (rez[1][3] * Z) % M;
fprintf(fout, "%d\n", In);
}
fclose(fin);
fclose(fin);
return 0;
}