Cod sursa(job #1543026)

Utilizator Julian.FMI Caluian Iulian Julian. Data 5 decembrie 2015 21:22:30
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.61 kb
#include <iostream>
#include <fstream>
#define mod 666013
using namespace std;
ifstream fin("iepuri.in");
ofstream fout("iepuri.out");

void inmultire(long long a[4][4],long long b[4][4])
{int i,j;
long long c[4][4];
 c[1][1]=((a[1][1]*b[1][1])%mod+(a[1][2]*b[2][1])%mod+(a[1][3]*b[3][1])%mod)%mod;
 c[1][2]=((a[1][1]*b[1][2])%mod+(a[1][2]*b[2][2])%mod+(a[1][3]*b[3][2])%mod)%mod;
 c[1][3]=((a[1][1]*b[1][3])%mod+(a[1][2]*b[2][3])%mod+(a[1][3]*b[3][3])%mod)%mod;
 c[2][1]=((a[2][1]*b[1][1])%mod+(a[2][2]*b[2][1])%mod+(a[2][3]*b[3][1])%mod)%mod;
 c[2][2]=((a[2][1]*b[1][2])%mod+(a[2][2]*b[2][2])%mod+(a[2][3]*b[3][2])%mod)%mod;
 c[2][3]=((a[2][1]*b[1][3])%mod+(a[2][2]*b[2][3])%mod+(a[2][3]*b[3][3])%mod)%mod;
 c[3][1]=((a[3][1]*b[1][1])%mod+(a[3][2]*b[2][1])%mod+(a[3][3]*b[3][1])%mod)%mod;
 c[3][2]=((a[3][1]*b[1][2])%mod+(a[3][2]*b[2][2])%mod+(a[3][3]*b[3][2])%mod)%mod;
 c[3][3]=((a[3][1]*b[1][3])%mod+(a[3][2]*b[2][3])%mod+(a[3][3]*b[3][3])%mod)%mod;

for(i=1;i<=3;i++)
    for(j=1;j<=3;j++)
    a[i][j]=c[i][j];
}



int main()
{int i,j;
long long rezultat,v,b,c,n,x,y,z,t;
long long a[4][4],r[4][4];
fin>>t;
while(t--){
    fin>>x>>y>>z>>v>>b>>c>>n;
    for(i=1;i<=3;i++)
        for(j=1;j<=3;j++)
        {r[i][j]=0;if(i==j)r[i][j]=1;}
    for(i=1;i<=3;i++)a[1][i]=0;a[1][2]=1;
    for(i=1;i<=3;i++)a[2][i]=0;a[2][3]=1;
    a[3][1]=c;a[3][2]=b;a[3][3]=v;

    for(i=0;(1LL<<i)<=(n-2);i++)
    {
        if((n-2) & (1LL<<i))
            inmultire(r,a);
        inmultire(a,a);
    }


    rezultat=((r[3][1]*x)%mod+(r[3][2]*y)%mod+(r[3][3]*z)%mod)%mod;
    fout<<rezultat<<'\n';
    }

}