Cod sursa(job #1184638)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 13 mai 2014 18:27:58
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#define MOD 666013
using namespace std;
ifstream in("iepuri.in");
ofstream out("iepuri.out");

int x,y,z,a,b,c,n,T;
long long Sol[4][4],Aux[4][4];

void Mul(long long A[4][4],long long B[4][4]) {

    int i,j,k;
    long long M[4][4];
    for(i=0;i<=2;i++)
        for(j=0;j<=2;j++){
            M[i][j]=0;
            for(k=0;k<=2;k++)
                M[i][j]=(M[i][j]+A[i][k]*B[k][j])%MOD;
        }
    for(i=0;i<=2;i++)
        for(j=0;j<=2;j++)
            A[i][j]=M[i][j];
}

int main () {

    int i,j;
    in>>T;
    while(T--) {
        in>>x>>y>>z>>a>>b>>c>>n;
        for(i=0;i<=3;i++)
            for(j=0;j<=3;j++){
                Sol[i][j]=0;
                Aux[i][j]=0;
            }
        Sol[0][0]=Sol[1][1]=Sol[2][2]=1;
        Aux[0][1]=Aux[1][2]=1;
        Aux[2][0]=c;Aux[2][1]=b;Aux[2][2]=a;
        n-=2;
        while(n){
            if(n&1)
                Mul(Sol,Aux);
            Mul(Aux,Aux);
            n/=2;
        }
        out<<(Sol[2][0]*x+Sol[2][1]*y+Sol[2][2]*z)%MOD<<'\n';
    }
    in.close();
    out.close();
    return 0;

}