Cod sursa(job #2401152)

Utilizator anamariatoaderAna Toader anamariatoader Data 9 aprilie 2019 14:05:55
Problema Iepuri Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <fstream>
#include <cstring>
#define MOD 666013

using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");

int t,x,y,z,A,B,C,n,i,a[4][4],v[4][4],c[4][4];

void inmultire(int v[4][4], int a[4][4]){
    int d[4][4];
    memset(d,0,sizeof(d));
    for(int i=1;i<=3;i++)
        for(int j=1;j<=3;j++)
            for(int k=1;k<=3;k++)
                d[i][j]=(d[i][j]+v[i][k]*a[k][j])%MOD;
    for(int i=1;i<=3;i++)
        for(int j=1;j<=3;j++)
            v[i][j]=d[i][j];
}

void rp(int k){
    while(k!=0){
        if(k%2==1)
            inmultire(c,a);
        inmultire(a,a);
        k/=2;
    }
}

int main() {
    fin>>t;
    for(i=1;i<=t;i++){
        fin>>x>>y>>z>>A>>B>>C>>n;
        memset(a,0,sizeof(a));
        memset(c,0,sizeof(c));
        a[2][1]=a[3][2]=1;
        a[1][3]=C;
        a[2][3]=B;
        a[3][3]=A;
        v[1][1]=x;
        v[1][2]=y;
        v[1][3]=z;
        c[1][1]=c[2][2]=c[3][3]=1;
        rp(n-2);
        inmultire(v,c);
        fout<<v[1][3]<<'\n';
    }
    return 0;
}