Pagini recente » Cod sursa (job #1429002) | Cod sursa (job #1844081) | Cod sursa (job #1227455) | Cod sursa (job #1588562) | Cod sursa (job #2506764)
#include<bits/stdc++.h>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
struct matrice
{
long long m[3][3];
};
matrice inmultire(matrice a, matrice b)
{
matrice c;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
c.m[i][j]=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
for(int k=0;k<3;k++)
{
c.m[i][j]+=a.m[i][k]*b.m[k][j]%666013;
}
c.m[i][j]%=666013;
}
}
return c;
}
matrice putere(matrice a,long long n)
{
matrice x;
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
if(i==j)
x.m[i][j]=1;
else
x.m[i][j]=0;
while(n>0)
{
if(n%2==0)
{
a=inmultire(a,a);
n/=2;
}
else
{
x=inmultire(x,a);
n--;
}
}
return x;
}
int main()
{
long long n;
matrice mat;
f>>n;
for(long long i=1;i<=n;i++)
{
long long x,y,z,a,b,c,nr;
f>>x>>y>>z>>a>>b>>c>>nr;
mat.m[1][0]=mat.m[2][1]=1;
mat.m[0][2]=c;
mat.m[1][2]=b;
mat.m[2][2]=a;
mat.m[0][0]=mat.m[0][1]=mat.m[1][1]=mat.m[2][0]=0;
mat=putere(mat,nr-2);
g<<(mat.m[0][2]*x+mat.m[1][2]*y+mat.m[2][2]*z)%666013<<'\n';
}
}