Pagini recente » Diferente pentru utilizator/razvan2006 intre reviziile 34 si 6 | Diferente pentru utilizator/roswen intre reviziile 1 si 25 | Sandbox | Diferente pentru utilizator/alex_tz307 intre reviziile 41 si 40 | Cod sursa (job #133669)
Cod sursa(job #133669)
#include <fstream.h>
ofstream fout("iepuri.out");
ifstream fin("iepuri.in");
long long n,x,p,b[3][3],a[3][3],c[3][3];
void egal(long long a[3][3],long long b[3][3]){
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
b[i][j]=a[i][j]%p;
}
void form(long long e[3][3],long long d[3][3]){
memset(c,0,sizeof(c));
for (int i=0;i<3;i++)
for (int j=0;j<3;j++)
for (int k=0;k<3;k++)
c[i][j]+=(d[i][k]*e[k][j])%p;
}
void afisare(long long n){
if (n==1) {
egal(a,b);
return ;}
if (n%2==0){
afisare(n/2);
form(b,b);
egal(c,b);}
else{
afisare(n-1);
form(a,b);
egal(c,b);}
}
void citire(){
a[0][1]=1;
a[1][2]=1;
fin>>n;
long long a1,a2,a3,A,B,C,XX;
p=666013;
for (long long i=0;i<n;i++){
fin>>a1>>a2>>a3>>A>>B>>C>>XX;
a[2][0]=C;
a[2][1]=B;
a[2][2]=A;
b[0][0]=1;
b[1][1]=1;
b[2][2]=1;
afisare(XX-2);
fout<<(b[2][0]*a1+b[2][1]*a2+b[2][2]*a3)%p<<"\n";
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
}
fin.close();
fout.close();
}
int main(){
citire();
return 0;
}