Cod sursa(job #1993242)

Utilizator OlivianOlivian Dan Cretu Olivian Data 22 iunie 2017 16:23:54
Problema Kperm Scor 100
Compilator cpp Status done
Runda concurs123 Marime 0.84 kb
#include<cstdio>
#define mod 666013
int n,m,r,c;
long long sol;
long long fact(int x)
{
     long long rez=1;
     for (int i=1;i<=x;i++) rez=(rez*i)%mod;
     return rez;
}
unsigned power(unsigned long long a,unsigned b)
{
    unsigned sol=1;
    for(;b;b>>=1)
    {
    if(b&1)   sol=(sol*a)%mod;
    a=(a*a)%mod;
    }
    return sol;
}
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;
}