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