Pagini recente » Cod sursa (job #778150) | Cod sursa (job #1396349) | Cod sursa (job #2729861) | Cod sursa (job #2183255) | Cod sursa (job #835322)
Cod sursa(job #835322)
#include<fstream>
#include<string.h>
#define mod 666013
#define dim 3
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long unitate[dim][dim];
long long sum , T,X[dim],a,b,c,n;
long long A[dim][dim],temp[dim][dim],sol[dim][dim];
int i;
void multiply(long long Pn[dim][dim],long long P[dim][dim],long long rez[dim][dim]){
int i,j,k;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
rez[i][j]=0;
for(k=0;k<3;k++){
rez[i][j]+=Pn[i][k]*P[k][j]%mod;
if(rez[i][j]>=mod)
rez[i][j]-=mod;
}
}
}
}
int main(){
f>> T;
unitate[0][0]=unitate[1][1]=unitate[2][2]=1;
while(T--){
f>>X[2]>>X[1]>>X[0]>>a>>b>>c>>n;
A[1][1]=A[1][2]=A[2][0]=A[2][2]=0;
A[1][0]=A[2][1]=1;
A[0][0]=a;A[0][1]=b;A[0][2]=c;
n-=2;
memcpy(sol,unitate,sizeof(sol));
while(n!=0){
if(n%2){
multiply(sol,A,temp);
memcpy(sol,temp,sizeof(sol));
}
multiply(A,A,temp);
memcpy(A,temp,sizeof(A));
n/=2;
}
sum=0;
for(i=0;i<3;i++){
sum+=(sol[0][i]*X[i])%mod;
sum%=mod;
}
g<<sum<<'\n';
}
return 0;
}