Cod sursa(job #1519605)

Utilizator DjokValeriu Motroi Djok Data 7 noiembrie 2015 16:27:22
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<bits/stdc++.h>
using namespace std;

const int MOD=666013;

int n,t;
long long a[5][5],b[5][5],x,y,z,aux[5][5];

void Prod(long long a[5][5],long long b[5][5]) {
    memset(aux,0,sizeof(aux));

    for(int i=1;i<=3;++i)
     for(int j=1;j<=3;++j)
      for(int k=1;k<=3;++k)
      aux[i][j]+=a[i][k]*b[k][j],aux[i][j]%=MOD;

    memcpy(a,aux,sizeof(aux));
}

int main()
{
  ifstream cin("iepuri.in");
  ofstream cout("iepuri.out");

  ios_base::sync_with_stdio(0); cin.tie(0);

  for(cin>>t;t;--t)
  {
    memset(a,0,sizeof(a)); a[2][1]=a[3][2]=1;

    cin>>x>>y>>z>>a[3][3]>>a[2][3]>>a[1][3]>>n;

    memcpy(b,a,sizeof(a));

    for(--n;n;)
    if(n&1) Prod(a,b),--n;
    else Prod(b,b),n/=2;

    cout<<(x*a[1][1]+y*a[2][1]+z*a[3][1])%MOD<<'\n';
  }

 return 0;
}