Cod sursa(job #3321579)

Utilizator Alez11jokler Alez11 Data 10 noiembrie 2025 11:32:49
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <fstream>
#include<string>
#include<vector>
#include<map>
#include<cmath>
using namespace std;
const string task="iepuri";
ifstream cin(task+".in");
ofstream cout(task+".out");
int T;
const int MOD = 666013;
vector<vector<long long >> multmatric(vector<vector<long long >> mat1, vector<vector<long long>> mat2) {
    int R1 = mat1.size();
    int C1 = mat1[0].size();
    int R2 = mat2.size();
    int C2 = mat2[0].size();

    vector<vector<long long>> matrez(R1, vector<long long>(C2, 0));

    for (int R = 0; R < R1; R++) {
        for (int C = 0; C < C2; C++) {
            for (int i = 0; i < C1; i++) {
                matrez[R][C] = (matrez[R][C]+mat1[R][i] * mat2[i][C])%MOD;
            }
        }
    }
    return matrez;
}
void solve()
{
    long long a,b,c,z0,z1,z2,n;
    cin>>z0>>z1>>z2>>a>>b>>c>>n;
n-=2;
vector<vector<long long>> x  = {{a%MOD, b%MOD ,c%MOD },{1, 0, 0},{0, 1, 0}};
vector<vector<long long >> result={{1,0,0},{0,1,0},{0,0,1}};
while (n > 0) {
    if (n & 1)
        result = multmatric(result, x);
    x = multmatric(x, x);
    n >>= 1;
}
vector<vector<long long >> cnt={{z2%MOD},{z1%MOD},{z0%MOD}};
cnt=multmatric(result,cnt);
cout<<cnt[0][0]%MOD<<'\n';

}
signed main()
{
    cin>>T;
    while(T--)
    {
        solve();
    }

    return 0;
}