Pagini recente » Cod sursa (job #1655904) | Cod sursa (job #2844240) | Cod sursa (job #2649831) | Cod sursa (job #1823069) | Cod sursa (job #2330346)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
// algoritm de la al k lea sir fibonacci cu
// matricea din 3, pentru ca dependenta e pe 3 zile nu 2
//0 0 c
//1 0 b x (Fn-2 Fn-1 Fn)
//0 1 a
const int MOD=666013; //dat
int mat[4][4],aux[4][4],init[4][4];
int x,y,z,a,b,c,n;
void expo(int pow)
{
if(pow <= 1) return;
expo(pow/2);
for( int i = 1; i <= 3; ++i)
for( int j = 1; j <= 3; ++j)
{
aux[i][j]=0;
for(int J = 1, I = 1; J <= 3; ++J, ++I)
aux[i][j]+= (1LL * mat[i][J] * mat[I][j] ) % MOD;
aux[i][j]%=MOD;
}
if(pow % 2)
{
for( int i = 1; i <= 3; ++i)
for( int j = 1; j <= 3; j++)
mat[i][j] = aux[i][j];
for( int i = 1; i <= 3; ++i)
for( int j = 1; j <= 3; j++)
{
aux[i][j]=0;
for(int J = 1, I = 1; J <= 3; ++J, ++I)
aux[i][j]+= (1LL * mat[i][J] * init[I][j] ) % MOD;
aux[i][j]%=MOD;
}
}
for( int i = 1; i <= 3; ++i)
for( int j = 1; j <= 3; j++)
mat[i][j] = aux[i][j];
}
int main()
{
int task;
fin>>task; // nr de seturi
for(int i = 1; i <= task; ++i)
{
fin >> x >> y >> z >> a >> b >> c >> n;
init[1][1]=init[3][1]=init[1][2]=init[2][2]=0;
init[2][1]=init[3][2]=1;
init[1][3]=c;
init[2][3]=b;
init[3][3]=a;
for(int i = 1; i <= 3; ++i)
for(int j = 1; j <= 3; ++j) mat[i][j]=init[i][j];
expo(n-2);
fout<< ( 1LL* x * mat[1][3] + 1LL* y * mat[2][3] + 1LL* z * mat[3][3] ) % MOD<<"\n";
}
return 0;
}