Cod sursa(job #289608)

Utilizator ssergiussSergiu-Ioan Ungur ssergiuss Data 26 martie 2009 20:53:07
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<algorithm>
#include<vector>
using namespace std;

#define DIM 11
#define MOD 666013

int t;
long long m[DIM][DIM],sol[DIM][DIM];

void inm(long long a[DIM][DIM], long long b[DIM][DIM]){
    int i,j,k;
    long long c[DIM][DIM];

    memset(c,0,sizeof(c));
    for(i=1; i<4; ++i)
        for(j=1; j<4; ++j)
            for(k=1; k<4; ++k)
                c[i][j]=(c[i][j]+a[i][k]*b[k][j])%MOD;
    memcpy(a,c,sizeof(c));}

void solve(){
    int i,x,y,z,a,b,c,n;

    scanf("%d",&t);
    for(i=0; i<t; ++i){
        scanf("%d%d%d%d%d%d%d",&x,&y,&z,&a,&b,&c,&n);
		memset(m,0,sizeof(m));
		memset(sol,0,sizeof(sol));
		m[1][2]=m[2][3]=1;
		m[3][1]=c;
		m[3][2]=b;
		m[3][3]=a;
		sol[1][1]=sol[2][1]=sol[3][1]=1;
		for(; n; n>>=1){
		    if(n&1)
                inm(sol,m);
            inm(m,m);}
        printf("%lld\n",((sol[1][1]*x)%MOD+(sol[1][2]*y)%MOD+(sol[1][3]*z)%MOD)%MOD);}}

int main(){
    freopen("iepuri.in","r",stdin);
    freopen("iepuri.out","w",stdout);
    solve();
    return 0;}