Pagini recente » Cod sursa (job #2058689) | Cod sursa (job #1142470) | Cod sursa (job #2826490) | Cod sursa (job #2370817) | Cod sursa (job #1303294)
#include <algorithm>
#include <fstream>
using namespace std;
const int MOD= 666013, NMAX= 2;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
int m1[NMAX+1][NMAX+1], m2[NMAX+1][NMAX+1];
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]= ( ans[i][j]*1LL + f[i][k]*g[k][j]*1LL )%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;
in >> 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= ( 1LL*x*m2[2][0] + 1LL*y*m2[1][0] + 1LL*z*m2[0][0] )%MOD;
out << afis << '\n';
}
return 0;
}