Pagini recente » Cod sursa (job #2984849) | Cod sursa (job #54579) | Cod sursa (job #2828110) | Cod sursa (job #2340656) | Cod sursa (job #2230918)
#include <cstdio>
#define MOD 666013
using namespace std;
int fact[5001];
int main()
{
FILE *fin=fopen ("kperm.in","r");
FILE *fout=fopen ("kperm.out","w");
int n,k,i,cst,sol,rest;
fscanf (fin,"%d%d",&n,&k);
rest=n%k;
/// ultimele rest elemente trb sa dea resturile 1..rest
fact[1]=1;
fact[0]=1;
for (i=2;i<=5000;i++)
fact[i]=((long long)fact[i-1]*i)%MOD;
cst=1;
for (i=1;i<=k;i++){
if (rest>=i)
cst=((long long)cst*fact[n/k+1])%MOD;
else
cst=((long long)cst*fact[n/k])%MOD;
}
// orice permutare de lung k in care ult rest elem sunt in intervalul
// 1.. rest trb inmultita cu cst
sol=((long long)((long long)fact[rest]*fact[k-rest])%MOD*cst)%MOD;
fprintf (fout,"%d",sol);
return 0;
}