Cod sursa(job #363385)
| Utilizator | Data | 12 noiembrie 2009 22:51:05 | |
|---|---|---|---|
| Problema | Kperm | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.52 kb |
#include <cstdio>
#define X 666013
#define ll long long
ll fact(int x)
{
int i;
ll p=1;
for (i=x; i>1; i--) p=p*i%X;
return p;
}
ll put (int x, int c)
{
int i;
ll p=1;
for (i=1; i<=c; i++) p=p*x%X;
return p;
}
int main()
{
freopen("kperm.in","r",stdin);
freopen("kperm.out","w",stdout);
int n, k, r, c;
ll p;
scanf("%d %d",&n,&k);
if (!(k%2)) printf("0\n"); else
{
r=n%k;
c=n/k;
p=fact(r);
p=p*fact(k-r)%X;
p=p*put(c+1,r)%X;
p=p*put(c,k-r)%X;
printf("%lld",p);
}
}