Cod sursa(job #210679)
| Utilizator | Data | 28 septembrie 2008 16:55:57 | |
|---|---|---|---|
| Problema | Sandokan | Scor | 30 |
| Compilator | c | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <stdio.h>
#define P 2000003
int N,K;
int Pow(int a,int n){
int w;
if (n==0) return 1;
w=Pow(a,n>>1);
w=(long long)w*w%P;
if (n&1) return (long long)w*a%P;
else return w;
}
int main(){
int i,sol=1,r=1,inv;
freopen("sandokan.in","r",stdin);
freopen("sandokan.out","w",stdout);
scanf("%d %d",&N,&K);
K=N%(K-1);N--;K--;
for (i=1;i<=K;++i){
r=(long long)r*i%P;
sol=(long long)sol*(N-K+1)%P;
}
inv=Pow(r,P-2);
sol=(long long)sol*inv%P;
printf("%d",sol);
return 0;
}
