Cod sursa(job #1398289)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 24 martie 2015 09:02:24
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
long long fact[5001];
long long put(int a,int b)
{
    if(b==0) return 1;
    if(b==1) return a;
    long long temp=put(a,b/2);
    return ((temp*temp)%666013)*put(a,b%2)%666013;
}
int main()
{
  freopen ("kperm.in","r",stdin);
  freopen ("kperm.out","w",stdout);
  fact[0]=1;
  fact[1]=1;
  for(int i=2;i<=5000;i++)
  {
          fact[i]=i*fact[i-1];
          fact[i]%=666013;
  }
  int n,k;
  scanf("%d%d",&n,&k);
  if(k%2==0) printf("0\n");
  else
  {
     int c=n/k,r=n%k;
      long long res=1;
      res*=fact[r];
      res%=666013;
      res*=fact[k-r];
      res%=666013;
      res*=(put(fact[c+1],r));
      res%=666013;
      res*=(put(fact[c],k-r));
      res%=666013;
      printf("%lld\n",res);
  }
}