Cod sursa(job #1404301)

Utilizator ovidiuz98Zamfir Ovidiu ovidiuz98 Data 27 martie 2015 23:33:25
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>
#define MOD 666013

using namespace std;

ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
int T,X,Y,Z,A,B,C,N;
void Pow(int a[][3],int b[][3],int c[][3]){
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++){
            c[i][j]=0;
            for(int k=0;k<3;k++)
                c[i][j]=(c[i][j]+1LL*a[i][k]*b[k][j])%MOD;
        }
}
void Copy(int a[][3],int b[][3]){
    for(int i=0;i<3;i++)
        for(int j=0;j<3;j++)
            a[i][j]=b[i][j];
}
int main(){
    fin>>T;
    while(T--){
        fin>>X>>Y>>Z>>A>>B>>C>>N;
        int a[3][3]={{A,B,C},{1,0,0},{0,1,0}};
        int r[3][3]={{1,0,0},{0,1,0},{0,0,1}};
        int b[3][3];
        N-=2;
        while(N){
            if(N&1){
                Pow(r,a,b);
                Copy(r,b);
            }
            Pow(a,a,b);
            Copy(a,b);
            N/=2;
        }
        fout<<(1LL*Z*r[0][0]+1LL*Y*r[0][1]+1LL*X*r[0][2])%MOD<<"\n";
    }
}