Pagini recente » Cod sursa (job #2248965) | Cod sursa (job #135367) | Cod sursa (job #2092069) | Cod sursa (job #2254445) | Cod sursa (job #3265189)
#include <fstream>
#define mod 666013
#define int long long
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int a[4][4], sol[4][4], v[3];
void inmultire (int a[4][4], int b[4][4])
{
int c[4][4]= {0};
for (int i=1; i<=3; i++)
{
for (int j=1; j<=3; j++)
{
int val=0;
for (int k=1; k<=3; k++)
val+=a[i][k]*b[k][j];
c[i][j]=val%mod;
}
}
for (int i=1; i<=3; i++)
for (int j=1; j<=3; j++)
a[i][j]=c[i][j];
}
void power (int n)
{
while (n)
{
if (n%2) inmultire (sol, a);
n/=2;
inmultire (a, a);
}
}
signed main ()
{
int q;
f >> q;
while (q--)
{
f >> v[0] >> v[1] >> v[2];
int x, y, z, k;
f >> x >> y >> z >> k;
if (k==0)
{
g << v[0]<<'\n';
continue;
}
if (k==1)
{
g << v[1] <<'\n';
continue;
}
if (k==2)
{
g << v[2] <<'\n';
continue;
}
for (int i=1; i<=3; i++)
{
for (int j=1; j<=3; j++)
{
if (i!=j) sol[i][j]=0;
else sol[i][j]=1;
}
}
for (int i=1; i<=3; i++)
for (int j=1; j<=3; j++)
a[i][j]=0;
a[2][1]=a[3][2]=1;
a[1][3]=z, a[2][3]=y, a[3][3]=x;
power (k-2);
g << v[0]*sol[1][3]+v[1]*sol[2][3]+v[2]*sol[3][3]<<'\n';
}
}