Cod sursa(job #2288127)

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

using namespace std;

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

void caca(int a[][5], int b[][5])
{
    int 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] += a[i][k] * b[k][j];
    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 3; j++)
            a[i][j] = c[i][j];
}

void jeg(int a[5][5], int n)
{
    int c[5][5];
    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 3; j++)
            c[i][j] = 0;
    c[1][1] = 1;
    c[2][2] = 1;
    c[3][3] = 1;
    while (n)
    {
        if (n % 2 == 1)
            caca(c, a);
        caca(a, a);
        n = n / 2;
    }
    for (int i = 1; i <= 3; i++)
        for (int j = 1; j <= 3; j++)
            a[i][j] = c[i][j];
}

int 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;
        jeg(aa, n - 2);
        caca(bb, aa);
        fout << bb[1][3] << '\n';
    }
    return 0;
}