Pagini recente » Cod sursa (job #1798944) | Cod sursa (job #2146158) | Cod sursa (job #588450) | Cod sursa (job #1477050) | Cod sursa (job #167225)
Cod sursa(job #167225)
#include<stdio.h>
#define rest 2000003
char p[5100];
int prim[2000],put[2000];
void ver1(int i){
int i1=i,j=0;
while(i>1 && prim[j]<=i1){
while(i%prim[j]==0){
i/=prim[j];
++put[j];
}
++j;
}
}
void ver2(int i){
int i1=i,j=0;
while(i>1 && prim[j]<=i1){
while(i%prim[j]==0){
i/=prim[j];
--put[j];
}
++j;
}
}
int main(){
freopen("sandokan.in","r",stdin);
freopen("sandokan.out","w",stdout);
int n,k,i,j,x;
int sum=1;
scanf("%d%d",&n,&k);
for(i=4;i<=5050;i+=2)
p[i]=1;
for(i=3;i<=5050;i+=2){
if(p[i]==0)
for(j=i*i;j<=5000;j+=i)
p[j]=1;
}
prim[0]=2;
j=1;
for(i=3;i<=5050;i+=2){
if(p[i]==0)
prim[j++]=i;
}
x=j;
for(i=2;i<n;++i)
ver1(i);
for(i=2;i<k;++i)
ver2(i);
for(i=2;i<n-k;++i)
ver2(i);
for(i=0;i<x;++i){
while(put[i]){
sum=(sum*prim[i])%rest;
--put[i];
}
}
printf("%d\n",sum%rest);
fclose(stdin);
fclose(stdout);
return 0;
}