Cod sursa(job #1877963)

Utilizator KronSabau Valeriu Kron Data 13 februarie 2017 20:05:06
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include <iostream>
#include <fstream>
#include <vector>
#define K 4
#define MOD 666013;
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long  n,x,y,z,a1,b1,c1,t;
vector<vector<long long> >A(K+1,vector<long long>(K+1));
vector<vector<long long> >B(K+1,vector<long long>(K+1));
vector<vector<long long> >AUX(K+1,vector<long long>(K+1));
vector<vector<long long> > inmultire(vector<vector<long long> >  a,vector<vector<long long> > b)
{
   vector<vector<long long> > c (K+1,vector<long long>(K+1));
    for(int i=1;i<K;i++)
        for(int j=1;j<K;j++){
            for(int k=1;k<K;k++)
            {
                c[i][j]=(c[i][j]+a[i][k]*b[k][j])%MOD;
            }
        }

    return c;
}
int main()
{
    f>>t;
    for(int i=0;i<t;i++)
    {
        f >> a1  >> b1 >> c1 >> x >> y >> z>> n;

        A[1][1]=0;
        A[1][2]=0;
        A[1][3]=z;
        A[2][1]=1;
        A[2][2]=0;
        A[2][3]=y;
        A[3][1]=0;
        A[3][2]=1;
        A[3][3]=x;
        B[1][1]=a1;
        B[1][2]=b1;
        B[1][3]=c1;
        while(n)
        {

            if(n%2)
            {
                B=inmultire(B,A);

            }

            A=inmultire(A,A);
            n=n/2;

        }
       g << B[1][1] << "\n";
    }

    return 0;
}