Cod sursa(job #1438769)

Utilizator CalinSpiridonSpiridon Calin CalinSpiridon Data 20 mai 2015 19:43:25
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 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;
int m[4][4];
int sol[4][4];
int baza[4][4];
int v[4];

void prod(int a[4][4],int b[4][4]){
    int d[4][4]={0};
    for(int i=1;i<=3;++i)
    for(int j=1;j<=3;++j)
       for(int k=1;k<=3;++k) d[i][j]=(1ll*a[i][k]*b[k][j]+d[i][j])%mod;
    for(int i=1;i<=3;++i)
        for(int j=1;j<=3;++j) a[i][j]=d[i][j];
}


int main(){
    fin>>t;
    for(;t;--t){
        fin>>x>>y>>z>>a>>b>>c>>n;
        for(int i=1;i<=3;++i)
        for(int j=1;j<=3;++j) sol[i][j]=0;
        sol[1][1]=sol[2][2]=sol[3][3]=1;
        m[1][3]=c;
        m[2][3]=b;
        m[3][3]=a;
        m[2][1]=m[3][2]=1;
        for(int i=1;i<=3;++i)
        for(int j=1;j<=3;++j) baza[i][j]=m[i][j];
        while(n){
            if(n%2==1) prod(sol,baza);
            prod(baza,baza);
            n/=2;
        }
        v[1]=x;
        v[2]=y;
        v[3]=z;
        int solutie=0;
        for(int j=1;j<=3;++j){
            solutie=(1ll*v[j]*sol[j][1]+solutie)%mod;
        }
        fout<<solutie<<'\n';


    }

    return 0;
}