Cod sursa(job #3205394)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 19 februarie 2024 14:53:02
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<fstream>
using namespace std;
ifstream E("iepuri.in");
ofstream G("iepuri.out");
using L=long long;
const int M=666013;
#define F(i) for(int i=0;i<3;++i)
int t,x,y,z,n;
struct X {
    L A[3][3];
    L* operator[](int i)
    {
        return A[i];
    }
    X operator*(X B)
    {
        X C={};
        F(i) F(j) F(k) (C[i][j]+=A[i][k]*B[k][j])%=M;
        return C;
    }
};
int main()
{
    for(E>>t;t;--t) {
        X Z={{{},{1},{0,1}}},R={{{1},{0,1},{0,0,1}}};
        for(E>>x>>y>>z>>Z[2][2]>>Z[1][2]>>Z[0][2]>>n;n;n>>=1,Z=Z*Z)
            if(n&1)
                R=R*Z;
        G<<(X{{{x,y,z}}}*R)[0][0]<<'\n';
    }
    return 0;
}