Cod sursa(job #1521239)

Utilizator diana-t95FMI Tudoreanu Diana Elena diana-t95 Data 10 noiembrie 2015 01:28:22
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <iostream>
#include <fstream>
using namespace std;
#define mod 666013
struct mat {
    int a[3][3];
    mat operator*(const mat& other) {
        mat answer;
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                answer.a[i][j] = 0;
                for (int k = 0; k < 3; k++)
                {
                    answer.a[i][j] += (a[i][k]*a[k][j])%mod;
                }
                answer.a[i][j] = answer.a[i][j]%mod;
            }
        }
        return answer;
    }
};
mat init;

mat f(int n)
{
    if (n==1) return init;
    else {
        mat x = f(n/2);
        x = x*x;
        if (n%2 == 0) return x;
        else return x*init;
    }
}
int main()
{
    int n, a, b, c, x, y, z;
    int t;
    ifstream ff("iepuri.in");
    ofstream g("iepuri.out");
    ff>>t;
    while(t--) {
    ff>>x>>y>>z>>a>>b>>c>>n;
    init.a[0][0] = 0; init.a[0][1] = 1; init.a[0][2] = 0;
init.a[1][0] = 0; init.a[1][1] = 0; init.a[1][2] = 1;
    init.a[2][0] = c; init.a[2][1] = b; init.a[2][2] = a;
    mat ans = f((n+(3-n%3)%3)/3+!!(n%3));
    int cv= n%3;
    if (!cv) cv = 3;
    g<<(ans.a[cv-1][0]*x %mod + ans.a[cv-1][1]*y %mod + ans.a[cv-1][2]*z %mod)%mod<<'\n';
    }
}