Cod sursa(job #1883961)

Utilizator AeroHHorea Stefan AeroH Data 18 februarie 2017 12:45:32
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
string s="iepuri.";
ifstream f(s+"in");
ofstream g(s+"out");

ll i,j,k,x,y,z,a,b,c,n,t,v[3]={0,1,2};

struct mat
{
    ll m[3][3];
    mat()
    {
        memset(m,0,sizeof(m));
    }
    void operator *= (const mat &a)
    {
        mat c;
        for(int i:v)
            for(int j:v)
                for(int k:v)
                    c.m[i][j]+=m[i][k]*a.m[k][j];
        for(int i:v)for(int j:v)
            m[i][j]=c.m[i][j]%666013;
    }
};

int main()
{
    f>>t;
    while(t--)
    {
        f>>x>>y>>z>>a>>b>>c>>n;n-=2;
        mat d,e;
        d.m[0][0]=x;
        d.m[0][1]=y;
        d.m[0][2]=z;

        e.m[0][2]=c;
        e.m[1][2]=b;
        e.m[2][2]=a;
        e.m[1][0]=1;
        e.m[2][1]=1;

        for (i=1;i<=n;i<<=1)
            {
                if (i&n) d*=e;
                e*=e;
            }
        g<<d.m[0][2]<<'\n';
    }
}