Pagini recente » Cod sursa (job #520613) | Cod sursa (job #1139157)
#include <fstream>
using namespace std;
long long A[5][5],B[5][5],C[5][5],sol;
int a,b,c,x,y,z,n,t,i,j,k;
void prod ( long long A[5][5], long long B[5][5], long long C[5][5] ) {
int i,j,k;
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
C[i][j]=0;
for(i=1;i<=3;i++) {
for(j=1;j<=3;j++)
for(k=1;k<=3;k++) {
C[i][j]+=((A[i][k])*(B[k][j]))%666013;
C[i][j]%=666013;
}
}
}
void atrib(long long A[5][5], long long B[5][5]){
for(int i=1;i<=3;i++)
for(int j=1;j<=3;j++)
B[i][j]=A[i][j];
}
int main () {
ifstream f("iepuri.in");
ofstream g("iepuri.out");
f>>t;
while(t--) {
f>>x>>y>>z;
f>>a>>b>>c>>n;
n--;n--;
for(i=1;i<=3;i++){
for(j=1;j<=3;j++)
A[i][j]=0;
A[i][i]=1;
}
B[1][1]=a;
B[1][2]=b;
B[1][3]=c;
B[2][1]=B[3][2]=1;
B[2][2]=B[2][3]=B[3][1]=B[3][3]=0;
while(n>0) {
if ((n&1)==1) {
prod(A,B,C);
atrib(C,A);
}
prod(B,B,C);
atrib(C,B);
n>>=1;
}
sol=((A[1][1]*z)%666013 +(A[1][2]*y)%666013 + (A[1][3]*x)%666013)%666013;
g<<sol<<"\n";
}
return 0;
}