Cod sursa(job #2544923)

Utilizator Alex100Alexandru Mihai Alex100 Data 12 februarie 2020 17:52:29
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
#define MAX 3
#define MOD 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");
struct matrix
{
    int values[MAX][MAX];
    matrix()
    {
        memset(values,0,sizeof(values));
    }
};
inline matrix operator*(matrix a,matrix b)
{
    int i,j,k;
    matrix ans;
    for(i=0;i<MAX;i++)
        for(j=0;j<MAX;j++)
        for(k=0;k<MAX;k++)
        ans.values[i][j]=(ans.values[i][j]+1LL*a.values[i][k]*b.values[k][j])%MOD;
    return ans;
}
int x,y,z,a,b,c,n,t;
int main()
{
    int p,h;
    matrix sol,m;
    fin>>t;
    for(h=1;h<=t;h++)
    {
    matrix sol,m;
    fin>>x>>y>>z>>a>>b>>c>>n;
    m.values[0][0]=a;
    m.values[0][1]=b;
    m.values[0][2]=c;
    m.values[1][0]=1;
    m.values[2][1]=1;
    sol.values[0][0]=sol.values[1][1]=sol.values[2][2]=1;
    p=n-2;
    while(p>0)
    {
        if(p%2==1)
            sol=sol*m;
        p/=2;
        m=m*m;

    }
    matrix vect;
    vect.values[0][0]=z;
    vect.values[1][0]=y;
    vect.values[2][0]=x;
    sol=sol*vect;
    fout<<sol.values[0][0]<<'\n';
    }
    return 0;
}