Cod sursa(job #849736)

Utilizator misinozzz zzz misino Data 7 ianuarie 2013 16:03:05
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#define MOD 666013
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
int a1,b,c,x,y,z,n,t,i,j,a[3][3],m[3][3];
void inmulteste(int a[][3],int m[][3])
{
    int i,j,k;
    int aux[3][3]={{0,0,0},{0,0,0},{0,0,0}};
    for(i=0;i<=2;++i)
    for(j=0;j<=2;++j)
    for(k=0;k<=2;++k)
    aux[i][j]=(aux[i][j]+1ll*a[i][k]*m[k][j])%MOD;
    for(i=0;i<=2;++i)
    for(j=0;j<=2;++j)
    a[i][j]=aux[i][j];
}
void putere(int a[][3],int p)
{
    while(p)
    {if(p&1)
    {
        inmulteste(a,m);
    }
    p/=2;
    inmulteste(m,m);
    }
}
int main()
{
    f>>t;
    while(t)
    {
        f>>x>>y>>z>>a1>>b>>c>>n;
        --t;
        m[0][0]=a1;
        m[0][1]=b;
        m[0][2]=c;
        m[1][0]=1;
        m[1][1]=0;
        m[1][2]=0;
        m[2][0]=0;
        m[2][1]=1;
        m[2][2]=0;
        for(i=0;i<=2;++i)
        for(j=0;j<=2;++j)
        if(i==j)
        a[i][j]=1;
        else
        a[i][j]=0;

        putere(a,n-2);
        g<<(1ll*a[0][0]*z%MOD+1ll*a[0][1]*y%MOD+1ll*a[0][2]*x%MOD)%MOD<<'\n';
    }
    return 0;
}