Pagini recente » Cod sursa (job #1553147) | Cod sursa (job #703651) | Cod sursa (job #3188084) | Cod sursa (job #566540) | Cod sursa (job #282377)
Cod sursa(job #282377)
#include<stdio.h>
#define INPUT "kperm.in"
#define OUTPUT "kperm.out"
#define LL long long
const LL MOD = 666013;
FILE *fin = fopen(INPUT, "r"), *fout = fopen(OUTPUT, "w");
LL N, K, R, C;
LL Sum, P, P2;
int main()
{
fscanf(fin, "%lld %lld", &N, &K);
Sum = 1;
if( K % 2 )
{
R = N % K;
C = N / K;
P = 1;
for(LL i = 1; i <= R; ++i)
P = (P * (i % MOD)) % MOD;
Sum = (Sum * P) % MOD;
fprintf(stderr, "%lld\n", Sum);
P = 1;
for(LL i = 1; i <= K-R; ++i)
P = (P * (i % MOD)) % MOD;
Sum = (Sum * P) % MOD;
fprintf(stderr, "%lld\n", Sum);
P = 1, P2 = 1;
for(LL i = 1; i <= C+1; ++i)
P = (P * (i % MOD)) % MOD;
for(LL i = 1; i <= R; ++i)
P2 = ((P2 % MOD) * (P % MOD)) % MOD;
if( !R ) P2 = 1;
Sum = (Sum * P2) % MOD;
fprintf(stderr, "%lld\n", Sum);
P = 1, P2 = 1;
for(LL i = 1; i <= C; ++i)
P = (P * (i % MOD)) % MOD;
for(LL i = 1; i <= K-R; ++i)
P2 = ((P2 % MOD) * (P % MOD)) % MOD;
if( !(K-R)) P2 = 1;
Sum = (Sum * P2) % MOD;
fprintf(stderr, "%lld\n", Sum);
fprintf(fout, "%lld\n", Sum);
}
else
fprintf(fout, "0\n");
fclose(fin);
fclose(fout);
return 0;
}