Pagini recente » Cod sursa (job #247060) | Cod sursa (job #1788943) | Statistici Volosciuc Edmond Roland (volosciucedmond) | Arhiva de probleme | Cod sursa (job #1475239)
#include <stdio.h>
#define MAXN 5000
#define MOD 2000003
int fr[MAXN + 1];
inline void add(int n, int ad){
int i;
for(i = 2; i * i <= n; i++){
while(n % i == 0){
fr[i] += ad;
n /= i;
}
}
if(n > 1){
fr[n] += ad;
}
}
inline void comb(int n, int k){
int i;
for(i = 2; i <= n; i++)
add(i, 1);
for(i = 2; i <= k; i++)
add(i, -1);
for(i = 2; i <= n - k; i++)
add(i, -1);
}
int main(){
FILE *in = fopen("sandokan.in", "r");
int n, k, cn, ck, i;
fscanf(in, "%d%d", &n, &k);
fclose(in);
cn = n - 1;
ck = n % (k - 1);
if(ck == 0)
ck = k - 1;
ck--;
if(ck > 0)
comb(cn, ck);
long long rez = 1;
for(i = 2; i <= MAXN; i++){
while(fr[i]){
rez *= i;
rez %= MOD;
fr[i]--;
}
}
FILE *out = fopen("sandokan.out", "w");
fprintf(out, "%d", rez);
fclose(out);
return 0;
}