Pagini recente » Cod sursa (job #2022625) | Cod sursa (job #2914083) | Cod sursa (job #2954637) | Cod sursa (job #188007) | Cod sursa (job #1609630)
#include <iostream>
#include<fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int n,p;
long long a[4][4],q[4][4],x[4][4],mod;
long long c[4][4];
long long inm(long long a[4][4],long long b[4][4],long long c[4][4],long long mod)
{
int i,j,k;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
for(k=1;k<=3;k++)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%mod;
}
long long copiez(long long a[4][4],long long b[4][4])
{
int i,j;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
a[i][j]=b[i][j];
}
void rezolvare()
{
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) x[i][j]=0;
x[1][1]=x[2][2]=x[3][3]=1;
while(p)
{
if(p%2==1)
{
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) c[i][j]=0;
inm(x,a,c,mod);
copiez(x,c);
p--;
}
else
{
for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) c[i][j]=0;
inm(a,a,c,mod);
copiez(a,c);
p=p/2;
}
}
int i;
long long sum=0;
for(i=1;i<=3;i++) sum=(sum+x[1][i]*q[i][1])%mod;
g<<sum<<"\n";
}
void citire()
{
f>>n;
for(int i=1;i<=n;i++)
{
int x,y,z;
f>>x>>y>>z;
a[1][1]=x;
a[1][2]=y;
a[1][3]=z;
a[2][1]=a[3][2]=1;
a[2][2]=a[2][3]=a[3][1]=a[3][3]=0;
f>>q[1][1]>>q[2][1]>>q[3][1];
f>>p;
p-=2;
mod=666013;
rezolvare();
}
}
int main()
{
citire();
return 0;
}