Pagini recente » Cod sursa (job #2154380) | Cod sursa (job #2687216) | Cod sursa (job #1725902) | Cod sursa (job #1087487) | Cod sursa (job #1304312)
#include <algorithm>
#include <fstream>
using namespace std;
typedef long long i64;
const int MOD= 666013;
ifstream in( "iepuri.in" );
ofstream out( "iepuri.out" );
int m1[3][3], m2[3][3];
void solve( int f[3][3], int g[3][3] )
{
int ans[3][3]= {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
for ( int i= 0; i<=2; ++i )
{
for ( int j= 0; j<=2; ++j )
{
for ( int k= 0; k<=2; ++k )
{
ans[i][j]= ( (i64)ans[i][j] + (i64)f[i][k]*g[k][j] )%MOD;
}
}
}
for ( int i= 0; i<=2; ++i )
{
for ( int j= 0; j<=2; ++j )
{
f[i][j]= ans[i][j];
}
}
}
void power_up( int P )
{
for ( int ok= 0; P>0; P/= 2 )
{
if ( P%2==1 )
{
if ( ok==1 ) solve( m2, m1 );
else
{
for ( int i= 0; i<=2; ++i )
{
for ( int j= 0; j<=2; ++j )
{
m2[i][j]= m1[i][j];
}
}
}
ok= 1;
}
solve( m1 , m1 );
}
}
int T, x, y, z, a, b, c, n;
int main( )
{
in >> T;
for ( int t= 1; t<=T; ++t )
{
in >> x >> y >> z >> a >> b >> c >> n;
for ( int i= 0; i<=2; ++i )
{
for ( int j= 0; j<=2; ++j )
{
m2[i][j]= 1;
m1[i][j]= 0;
}
}
m1[0][0]= a;
m1[1][0]= b;
m1[2][0]= c;
m1[0][1]= 1;
m1[1][2]= 1;
power_up( n-2 );
int afis= ( (i64)x*m2[2][0]+(i64)y*m2[1][0]+(i64)z*m2[0][0] )%MOD;
out << afis << '\n';
}
return 0;
}