Pagini recente » Cod sursa (job #35865) | Cod sursa (job #42635) | Cod sursa (job #3296318) | Cod sursa (job #821815) | Cod sursa (job #811440)
Cod sursa(job #811440)
#include<fstream>
#include<string.h>
#define mod 666013
#define dim 5
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int unitate[dim][dim];
int sum , T,X[dim],a,b,c,n;
int A[dim][dim],temp[dim][dim],sol[dim][dim];
int i;
void multiply(int Pn[dim][dim],int P[dim][dim],int rez[dim][dim]){
int i,j,k;
for(i=1;i<=3;i++){
for(j=1;j<=3;j++){
rez[i][j]=0;
for(k=1;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[1][1]=unitate[2][2]=unitate[3][3]=1;
while(T--){
f>>X[1]>>X[2]>>X[3]>>a>>b>>c>>n;
A[1][1]=A[1][3]=A[2][1]=A[2][2]=0;
A[1][2]=A[2][3]=1;
A[3][1]=c;A[3][2]=b;A[3][3]=a;
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=1;i<=3;i++){
sum+=(sol[3][i]*X[i])%mod;
if(sum>=mod)
sum-=mod;
}
g<<sum<<'\n';
}
return 0;
}