Nu aveti permisiuni pentru a descarca fisierul grader_test3.in
Cod sursa(job #1122051)
| Utilizator | Data | 25 februarie 2014 15:39:28 | |
|---|---|---|---|
| Problema | Iepuri | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 1.29 kb |
#include <cstdio>
#include <cstring>
#define MOD 666013
using namespace std;
long long A,B,C,x,y,z,n,tc;
long long a[4][4],b[4][4],c[4][4];
void set0 (long long m[4][4])
{
for(long i=1;i<=3;i++)
for(long j=1;j<=3;j++)
m[i][j]=0;
}
void copy (long long dest[4][4],long long src[4][4])
{
for(long i=1;i<=3;i++)
for(long j=1;j<=3;j++)
dest[i][j]=src[i][j];
}
void multiply (long long a[4][4], long long b[4][4],long long c[4][4])
{
for(long i=1;i<=3;i++)
for(long j=1;j<=3;j++)
{
c[i][j]=0;
for(long k=1;k<=3;k++)
c[i][j]=(c[i][j]+a[i][k]*b[k][j])%MOD;
}
copy(a,c);
}
int main()
{
freopen ("iepuri.in","r",stdin);
freopen ("iepuri.out","w",stdout);
scanf("%ld",&tc);
while(tc--)
{
scanf("%lld%lld%lld%lld%lld%lld%lld",&A,&B,&C,&x,&y,&z,&n);
set0(a);
set0(b);
a[1][2]=a[2][3]=1;;
a[3][1]=z,a[3][2]=y,a[3][3]=x;
b[1][1]=b[2][2]=b[3][3]=1;
n=n-2;
while(n){
if(n%2)
multiply(b,a,c);
multiply(a,a,c);
n/=2;
}
printf("%lld\n",(b[3][1]*A+b[3][2]*B+b[3][3]*C)%MOD);
}
return 0;
}
