Cod sursa(job #210680)
| Utilizator | Data | 28 septembrie 2008 17:03:38 | |
|---|---|---|---|
| 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 b){
long long x=1,y=a;
while(b > 0){
if(b%2 == 1) x=(x*y)%P;
y = (y*y)%P;
b /= 2;
}
return x%P;
}
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;
}
