Pagini recente » Cod sursa (job #426776) | Cod sursa (job #2823884) | Cod sursa (job #1849387) | Cod sursa (job #2363711) | Cod sursa (job #3167159)
#include <fstream>
#define mod 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long a[4][4],b[4][4],c[4][4];
long long n,m,A,B,C,x,y,z;
void mull(int q[4][4],int w[4][4])
{
int t[4][4], s[4][4];
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
{
t[i][j]=q[i][j];
s[i][j]=w[i][j];
q[i][j]=0;
}
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
for(int k=1;k<=3;k++)
{
q[i][j]+=s[k][j]*t[i][k];
q[i][j]%=mod;
}
}
void exp_mat()
{
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
a[i][j]=b[i][j];
while(n!=1)
{
if(n%2==1)
{
mull(b,b);
n/=2;
mull(b,a);
}
else if(n!=0)
{
mull(b,b);
n/=2;
}
}
}
void solve()
{
f>>x>>y>>z>>A>>B>>C>>n;
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
b[i][j]=0;
b[1][1]=A;
b[2][1]=B;
b[3][1]=C;
b[1][2]=1;
b[2][3]=1;
if(n==0)
g<<x;
else if(n==1)
g<<y;
else if(n==2)
g<<z;
else
{
n-=2;
exp_mat();
g<<b[1][1]*z+b[2][1]*y+b[3][1]*x<<'\n';
}
}
int main()
{
long long test;
f>>test;
while(test--)
solve();
return 0;
}