Cod sursa(job #1828761)

Utilizator Andrei_CotorAndrei Cotor Andrei_Cotor Data 13 decembrie 2016 20:52:00
Problema Kperm Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#define Mod 666013
using namespace std;
ifstream fi("kperm.in");
ofstream fo("kperm.out");
int t1,t2,t3,t4,rez,F[5002],n,k,r,c;

int p(int a, int p)
{
    int rez=1,i;
    for(i=0; (1<<i)<=p; i++)
    {
        if(((1<<i)&p)>0)
            rez=(rez*a)%Mod;
        a=(a*a)%Mod;
    }
    return rez%Mod;
}

void fact(int lim)
{
    int i;
    F[0]=1;
    for(i=1; i<=lim; i++)
    {
        F[i]=(F[i-1]*i)%Mod;
    }
}

int main()
{
    fact(5000);
    fi>>n>>k;
    if(k%2==0)
    {
        fo<<"0\n";
        fi.close();
        fo.close();
        return 0;
    }
    r=n%k;
    c=n/k;
    t1=F[r]%Mod;
    t2=F[k-r]%Mod;
    t3=p(F[c+1]%Mod,r)%Mod;
    t4=p(F[c]%Mod,k-r)%Mod;
    rez=(((t1*t2)%Mod)*((t3*t4)%Mod))%Mod;
    fo<<rez<<"\n";
    fi.close();
    fo.close();
    return 0;
}