Cod sursa(job #2608457)

Utilizator mihai2003LLL LLL mihai2003 Data 1 mai 2020 13:09:17
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <vector>

std::ifstream in("iepuri.in");
std::ofstream out("iepuri.out");
const int MOD=666013;

struct mat{
    std::vector<std::vector<int> > m;
    mat(std::vector<std::vector<int>>aux):m(aux){}
    mat operator * (const mat & aux){
        std::vector<std::vector<int>>rez;
        for(int i=0;i<m.size();i++){
            rez.push_back(std::vector<int>());
            for(int j=0;j<aux.m[0].size();j++)
                rez[i].push_back(0);
        }
        for(int i=0;i<m.size();i++)
            for(int j=0;j<aux.m[0].size();j++)
                for(int k=0;k<aux.m.size();k++)

                    rez[i][j]+=(1LL*m[i][k]*aux.m[k][j])%MOD,rez[i][j]%=MOD;
        return rez;
    }
    mat(){}
};

mat rez,fib3,ma;

void lgPut(int k){
    while(k){
        if(k%2==1)
            rez=rez*ma;
        ma=ma*ma;
        k/=2;
    }
}

int main(){
    int t;
    in>>t;
    for(int i=0;i<t;i++){
        int x,y,z,a,b,c,n;
        in>>x>>y>>z>>a>>b>>c>>n;
        n-=2;
        rez=mat({{1,0,0},{0,1,0},{0,0,1}});
        fib3=mat({{z},{y},{x}});
        ma=mat({{a,b,c},{1,0,0},{0,1,0}});
        lgPut(n);
        rez=rez*fib3;
        out<<rez.m[0][0]<<'\n';
    }
    return 0;
}