Cod sursa(job #2288139)

Utilizator IoanaDraganescuIoana Draganescu IoanaDraganescu Data 22 noiembrie 2018 21:22:03
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("iepuri.in");
ofstream fout("iepuri.out");

void caca(long long a[][5], long long b[][5])
{
    long long c[5][5];
    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 3; j++)
            c[i][j] = 0;
    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 3; j++)
            for (int k = 1; k <= 3; k++)
                c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % 666013;
    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 3; j++)
            a[i][j] = c[i][j];
}

long long aa[5][5], bb[5][5];

int main()
{
    int t;
    fin >> t;
    while (t--)
    {
        int x, y, z, a, b, c, n;
        fin >> x >> y >> z >> a >> b >> c >> n;
        bb[1][1] = x;
        bb[1][2] = y;
        bb[1][3] = z;
        aa[1][1] = 0; aa[1][2] = 0; aa[1][3] = c;
        aa[2][1] = 1; aa[2][2] = 0; aa[2][3] = b;
        aa[3][1] = 0; aa[3][2] = 1; aa[3][3] = a;
        n = n - 2;
        while (n)
        {
            if (n % 2 == 1)
                caca(bb, aa);
            caca(aa, aa);
            n = n / 2;
        }
        fout << bb[1][3] << '\n';
    }
    return 0;
}