Cod sursa(job #2555381)

Utilizator betybety bety bety Data 23 februarie 2020 22:34:55
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.32 kb
#include <fstream>
using namespace std;
ifstream cin("iepuri.in");
ofstream cout("iepuri.out");
const long long mod=666013;
struct matrix
{
    long long a[4][4];
}baza,prod,rez;
matrix p1(matrix v,matrix f)
{
    matrix c;
    for(long long i=1;i<=3;++i)
    for(long long j=1;j<=3;++j)
    {
        c.a[i][j]=0;
        for(long long k=1;k<=3;++k)
            c.a[i][j]=(c.a[i][j]+(v.a[i][k]*f.a[k][j])%mod)%mod;
    }
    return c;
}
matrix power(matrix baza,long long exp)
{
    if(exp==1)
        return baza;
    matrix x=power(baza,exp/2);
    if(exp%2==0)
        return p1(x,x);
    return p1(baza,p1(x,x));
}
matrix p2(matrix v,matrix f)
{
    matrix c;
    for(long long i=1;i<=3;++i)
    {
        c.a[i][1]=0;
        for(long long k=1;k<=3;++k)
            c.a[i][1]=(c.a[i][1]+(v.a[i][k]*f.a[k][1])%mod)%mod;
    }
    return c;
}
int main()
{
    long long n,x,y,z,aa,bb,cc,tst;
    cin>>tst;
    for(long long w=1;w<=tst;++w)
    {
        cin>>x>>y>>z>>aa>>bb>>cc>>n;
        baza.a[1][1]=0;baza.a[1][2]=1;baza.a[1][3]=0;
        baza.a[2][1]=0;baza.a[2][2]=0;baza.a[2][3]=1;
        baza.a[3][1]=cc;baza.a[3][2]=bb;baza.a[3][3]=aa;
        prod.a[1][1]=x;prod.a[2][1]=y;prod.a[3][1]=z;
        rez=p2(power(baza,n-2),prod);
        cout<<rez.a[3][1]<<'\n';
    }
    return 0;
}