Pagini recente » Cod sursa (job #3161133) | Cod sursa (job #2822291) | Cod sursa (job #865361) | Cod sursa (job #2348861) | Cod sursa (job #1721822)
#include <fstream>
#define MOD 666013
using namespace std;
long long ceva[4][4],n,rez[4][4],ans;
int t,x1,x,y,z,a,b,c,i,j;
void inmultire(long long a[4][4],long long b[4][4])
{
rez[1][1]=(((a[1][1]%MOD*b[1][1]%MOD)%MOD+(a[1][2]%MOD*b[2][1]%MOD)%MOD)%MOD+(a[1][3]%MOD*b[3][1]%MOD)%MOD)%MOD;
rez[1][2]=(((a[1][1]%MOD*b[1][2]%MOD)%MOD+(a[1][2]%MOD*b[2][2]%MOD)%MOD)%MOD+(a[1][3]%MOD*b[3][2]%MOD)%MOD)%MOD;
rez[1][3]=(((a[1][1]%MOD*b[1][3]%MOD)%MOD+(a[1][2]%MOD*b[2][3]%MOD)%MOD)%MOD+(a[1][3]%MOD*b[3][3]%MOD)%MOD)%MOD;
rez[2][1]=(((a[2][1]%MOD*b[1][1]%MOD)%MOD+(a[2][2]%MOD*b[2][1]%MOD)%MOD)%MOD+(a[2][3]%MOD*b[3][1]%MOD)%MOD)%MOD;
rez[2][2]=(((a[2][1]%MOD*b[1][2]%MOD)%MOD+(a[2][2]%MOD*b[2][2]%MOD)%MOD)%MOD+(a[2][3]%MOD*b[3][2]%MOD)%MOD)%MOD;
rez[2][3]=(((a[2][1]%MOD*b[1][3]%MOD)%MOD+(a[2][2]%MOD*b[2][3]%MOD)%MOD)%MOD+(a[2][3]%MOD*b[3][3]%MOD)%MOD)%MOD;
rez[3][1]=(((a[3][1]%MOD*b[1][1]%MOD)%MOD+(a[3][2]%MOD*b[2][1]%MOD)%MOD)%MOD+(a[3][3]%MOD*b[3][1]%MOD)%MOD)%MOD;
rez[3][2]=(((a[3][1]%MOD*b[1][2]%MOD)%MOD+(a[3][2]%MOD*b[2][2]%MOD)%MOD)%MOD+(a[3][3]%MOD*b[3][2]%MOD)%MOD)%MOD;
rez[3][3]=(((a[3][1]%MOD*b[1][3]%MOD)%MOD+(a[3][2]%MOD*b[2][3]%MOD)%MOD)%MOD+(a[3][3]%MOD*b[3][3]%MOD)%MOD)%MOD;
}
void putere(long long baza[4][4],int exp)
{
long long int sol[4][4];
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
sol[i][j]=0;
for(i=1;i<=3;i++)
sol[i][i]=1;
for(;exp;exp>>=1)
{
if((exp&1)==1)
{
inmultire(sol,baza);
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
sol[i][j]=rez[i][j];
}
inmultire(baza,baza);
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
baza[i][j]=rez[i][j];
}
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
ceva[i][j]=sol[i][j];
}
int main()
{
ifstream f("iepuri.in");
ofstream g("iepuri.out");
f>>t;
for(x1=1;x1<=t;x1++)
{
f>>x>>y>>z>>a>>b>>c>>n;
ceva[1][1]=0;
ceva[2][1]=1;
ceva[3][1]=0;
ceva[1][2]=0;
ceva[2][2]=0;
ceva[3][2]=1;
ceva[1][3]=c;
ceva[2][3]=b;
ceva[3][3]=a;
putere(ceva,n);
ans=x*ceva[1][1]+y*ceva[2][1]+z*ceva[3][1];
g<<ans<<"\n";
}
}