Pagini recente » Cod sursa (job #268042) | Cod sursa (job #244111) | Cod sursa (job #859130) | Cod sursa (job #2400498) | Cod sursa (job #2839912)
#include <fstream>
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");
long long a[11][11],c[11][11],n,ras[11][11],t,X,Y,Z,A,B,C;
void afis()
{
for (long long i=1;i<=2;++i)
for (long long j=1;j<=2;++j)
out<<a[i][j]<<" ";
out<<'\n';
}
void mul(long long a[11][11],long long b[11][11])
{
for (long long i=1;i<=3;++i)
for (long long j=1;j<=3;++j)
c[i][j]=0;
for (long long i=1;i<=3;++i)
for (long long j=1;j<=3;++j)
for (long long k=1;k<=3;++k)
{
c[i][j]+=a[i][k]*b[k][j];
}
for (long long i=1;i<=3;++i)
for (long long j=1;j<=3;++j)
a[i][j]=c[i][j]%666013;
}
void po(long long n)
{
while (n)
{
if (n%2==0) {n/=2; mul(a,a);}
else {n--; mul(ras,a);}
}
}
int main()
{
in>>t;
while (t--){
for (int i=1;i<=3;++i)
for (int j=1;j<=3;++j)
a[i][j]=ras[i][j]=0;
in>>X>>Y>>Z>>C>>B>>A>>n;
a[1][2]=a[2][3]=1;
a[3][1]=A;
a[3][2]=B;
a[3][3]=C;
ras[1][1]=ras[2][2]=ras[3][3]=1;
po(n);
out<<X*ras[1][1]+Y*ras[1][2]+Z*ras[1][3]<<'\n';}
return 0;
}