Mai intai trebuie sa te autentifici.

Cod sursa(job #2431058)

Utilizator mariasmmskklns mariasmm Data 17 iunie 2019 20:13:07
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
const int mod= 666013;
using namespace std;

ifstream f("iepuri.in");
ofstream g("iepuri.out");



void inmultire(int a[5][5], int b[5][5]) {

    int c[5][5] = {0};

    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j)
            for (int k = 0; k < 3; ++k)
                c[i][j] = (1ll * c[i][j] + 1ll * a[i][k] * b[k][j]) % mod;
    }

    for (int i = 0; i < 5; ++i)
        for (int j = 0; j < 5; ++j)
            a[i][j] = c[i][j];

}



int main() {

    int n;
    f >> n;


    for (int p = 0; p < n; p++) {

        int copie[5][5];

        int x, y, z, a, b, c, zile;
        f >> x >> y >> z;
        f >> a >> b >> c;
        f >> zile;

        int mat[5][5] = {{a, 1, 0}, {b, 0, 1}, {c, 0, 0}};
        for (int i = 0; i < 3; ++i) {
            for (int j = 0; j < 3; ++j) {
                copie[i][j] = mat[i][j];
            }
        }

        zile -= 3;

        while (zile) {
            if (zile % 2 == 1)
                inmultire(copie, mat);
            inmultire(mat, mat);
            zile /= 2;
        }

        g<< (1ll * z * copie[0][0] + 1ll * y * copie[1][0] + 1ll * x * copie[2][0]) % mod << '\n';

    }

    return 0;

}