Cod sursa(job #25591)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 4 martie 2007 13:03:02
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>

#define mod 666013
#define ll long long

int n,m,r,c;
ll sol;

ll fact(int x)
{
     ll rez=1;
     int i;
     
     for (i=1;i<=x;i++) rez=(rez*i)%mod;
     
     return rez;
}

ll power(int a,int x)
{
     ll rez=1;
     int i;
     
     for (i=1;i<=x;i++) rez=(rez*a)%mod;
     
     return rez;
}

int main()
{
    freopen("kperm.in","r",stdin);
    freopen("kperm.out","w",stdout);
    
    scanf("%d %d",&n,&m);
    
    if (n%m==0)
    {
         c=n/m-1;
         r=m;
    }
    else {
             c=n/m;
             r=n%m;
         }
         
    if (m%2==0) printf("0\n");
    else {
              sol=(fact(r)*fact(m-r))%mod;
              sol=(sol*power(fact(c+1),r))%mod;
              sol=(sol*power(fact(c),m-r))%mod;
              printf("%lld\n",sol);
         }
    
    return 0;
}