Cod sursa(job #1853288)

Utilizator ionanghelinaIonut Anghelina ionanghelina Data 21 ianuarie 2017 16:13:48
Problema Iepuri Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include<bits/stdc++.h>
#define MOD 666013
using namespace std;
int t,n,a,b,c,x,y,z;
int sol,r[3][3],aux[3][3];
int id[3][3]=
{
    {1,0,0},
    {0,1,0},
    {0,0,1}
};
void inmultire(int a[3][3],int b[3][3],int 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]+=a[i][k]*b[k][j];
                c[i][j]%=MOD;
            }
        }
    }
}
int main()
{
    freopen("iepuri.in","r",stdin);
    freopen("iepuri.out","w",stdout);
    scanf("%d",&t);
    for(int test=1;test<=t;test++)
    {
        scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
        int m[3][3]=
        {
          {a,b,c},
          {1,0,0},
          {0,1,0}
        };
        n-=2;
        memcpy(r,id,sizeof(id));
        while(n)
        {
            if(n%2)
            {
                inmultire(r,m,aux);
                memcpy(r,aux,sizeof(aux));
            }
            inmultire(m,m,aux);
            memcpy(m,aux,sizeof(aux));
            n>>=1;
        }
        sol=z*r[0][0]+y*r[0][1]+x*r[0][2];
        sol%=MOD;
        printf("%d\n",sol);
    }
    return 0;
}