Cod sursa(job #3324279)

Utilizator TeodoRazvanStancu Teodor-Razvan TeodoRazvan Data 21 noiembrie 2025 21:39:35
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.95 kb
#include <bits/stdc++.h>

using namespace std;

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

const int ms=5,MOD=666013,mod=666013;

long long int ans[ms][ms],inm[ms][ms],aux[ms][ms],rez[ms][ms];

void prod(long long int a[ms][ms],long long int b[ms][ms],long long int r[ms][ms],int n,int m,int p){
    for(int i=1;i<=m;i++){
        for(int j=1;j<=m;j++){
            aux[i][j]=0;
        }
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            for(int k=1;k<=p;k++){
                aux[i][j]=(aux[i][j]+a[i][k]*b[k][j])%mod;
            }
        }
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=m;j++){
            r[i][j]=aux[i][j];
        }
    }
}

long long int power(long long int a,long long int n){
    long long int p=1;
    while(n){
        if(n%2==1){
            p*=a;
            p%=mod;
        }
        a*=a;
        a%=mod;
        n/=2;
    }
    return p;
}

void lgput(long long int m[ms][ms],int n,int e){
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            rez[i][j]=0;
        }
    }
    for(int i=1;i<=n;i++) rez[i][i]=1;
    while(e!=0){
        if(e%2==1){
            prod(rez,m,rez,n,n,n);
        }
        prod(m,m,m,n,n,n);
        e/=2;
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            m[i][j]=rez[i][j];
        }
    }
}

void solve(){
    int x,y,z,a,b,c,n;
    fin>>x>>y>>z>>a>>b>>c>>n;
    inm[1][1]=a;
    inm[1][2]=1;
    inm[1][3]=0;
    inm[2][1]=b;
    inm[2][2]=0;
    inm[2][3]=1;
    inm[3][1]=c;
    inm[3][2]=0;
    inm[3][3]=0;
    ans[1][1]=z;
    ans[1][2]=y;
    ans[1][3]=x;
    ans[2][1]=b;
    ans[2][2]=0;
    ans[2][3]=1;
    ans[3][1]=c;
    ans[3][2]=0;
    ans[3][3]=0;
    lgput(inm,3,n-2);
    prod(ans,inm,ans,3,3,3);
    fout<<ans[1][1]<<'\n';
}

int main(){
    int tt;
    fin>>tt;
    while(tt--){
        solve();
    }
    return 0;
}