Cod sursa(job #1309108)

Utilizator cautionPopescu Teodor caution Data 5 ianuarie 2015 11:50:19
Problema Kperm Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#define MODULO 666013
using namespace std;
long factorial(long n)
{
    long k=1;
    for(long i=1; i<=n; ++i)
    {
        k*=i;
        k%=MODULO;
    }
    return k;
}
long exponential(long n, long pow)
{
    long k=1;
    for(long i=0; i<pow; ++i)
    {
        k*=n;
        k%=MODULO;
    }
    return k;
}
int main()
{
    ifstream in("kperm.in");
    ofstream out("kperm.out");
    long n, k;
    in>>n>>k;
    if((k*(k+1)/2)%k)
        out<<"0\n";
    else
    {
        long nmodk=n%k;
        if(nmodk==0) nmodk=k;
        long x1, x2, x3, x4;
        x2=factorial(k-(n-1)/k-1);
        x1=factorial((n-1)/k+1);
        x3=factorial(nmodk);
        x4=factorial(k-nmodk);
        out<<(((exponential(x1, nmodk)*exponential(x2, k-nmodk))%MODULO)*(x3*x4)%MODULO)%MODULO;
    }
    in.close(); out.close();
    return 0;
}