Cod sursa(job #2183315)

Utilizator aditzu7Adrian Capraru aditzu7 Data 23 martie 2018 00:21:18
Problema Iepuri Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#define MOD 666013
#define ll long long
#include <string.h>
using namespace std;
ifstream f("iepuri.in");
ofstream g("iepuri.out");
ll a[3][3];
ll c[3][3];
int t,k;
ll x,y,z,a2,b,c2;
ll sol[3][3]={{1,0,0},{0,1,0},{0,0,1}};
int n;
void mult(ll a[3][3],ll b[3][3]){
ll c[3][3];
int i,j,k;
for(i=0;i<=2;i++){
for(j=0;j<=2;j++){c[i][j]=0;
for(k=0;k<=2;k++)
    c[i][j]+=a[i][k]*b[k][j];
    c[i][j]=c[i][j]%MOD;

}


}

for(i=0;i<=2;i++)
    for(j=0;j<=2;j++) a[i][j]=c[i][j];
}
void put(ll a[3][3],int k){
while(k){
    if(k%2==1) {mult(a,c);k--;}
    else{
        mult(c,c);
        k/=2;
    }


}



}
int main()
{f>>t;
for(k=1;k<=t;k++){
f>>x>>y>>z>>a2>>b>>c2>>n;//n--;

memset(a,0,sizeof(a));
memset(c,0,sizeof(c));
memset(sol,0,sizeof(sol));
sol[0][0]=sol[1][1]=sol[2][2]=1;
a[0][0]=x;
a[0][1]=y;
a[0][2]=z;

c[0][2]=c2;
c[1][2]=b;
c[2][2]=a2;
c[1][0]=c[2][1]=1;
put(sol,n);
mult(a,sol);
g<<a[0][0]<<'\n';
}
    return 0;
}