Cod sursa(job #2991143)

Utilizator rusepetruRuse Petru rusepetru Data 9 martie 2023 10:16:47
Problema Iepuri Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <fstream>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
long long c[3][3],u[3][3],s[3][3];
long long x,y,z,n,t;
void inmultire(long long a[3][3],long long b[3][3])
{
    long long c[3][3];
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)
        {
            c[i][j]=0;
            for(int k=0;k<3;k++)c[i][j]=(c[i][j]+a[i][k]*b[k][j])%666013;
        }
    }
    for(int i=0;i<3;i++)
    {
        for(int j=0;j<3;j++)a[i][j]=c[i][j];
    }
}
void putere(long long a[3][3],long long p)
{
    while(p)
    {
        if(p%2==1){inmultire(a,c);p--;}
        else{inmultire(c,c);p=p/2;}
    }
}
int main()
{
    f>>t;
    while(t)
    {
        t--;
        f>>x>>y>>z>>c[2][2]>>c[1][2]>>c[0][2]>>n;
        c[0][0]=0;c[0][1]=0;
        c[1][0]=1;c[1][1]=0;
        c[2][0]=0;c[2][1]=1;

        u[0][0]=1;u[0][1]=0;u[0][2]=0;
        u[1][0]=0;u[1][1]=1;u[1][2]=0;
        u[2][0]=0;u[2][1]=0;u[2][2]=1;

        s[0][0]=x;s[0][1]=y;s[0][2]=z;
        s[1][0]=0;s[1][1]=0;s[1][2]=0;
        s[2][0]=0;s[2][1]=0;s[2][2]=0;

        putere(u,n);
        inmultire(s,u);
        g<<s[0][0]<<'\n';
    }
    return 0;
}