Cod sursa(job #2212303)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 13 iunie 2018 19:17:12
Problema Kperm Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("kperm.in");
ofstream fout("kperm.out");

typedef long long ll;

const ll MOD=666013;

ll n,k;

ll fact(ll x)
{
    ll ans=1,i;
    for(i=1;i<=x;i++)
        ans=(ll)ans*i%MOD;
    return ans;
}

ll expow(ll a,ll b)
{
    ll ans=1;
    while(b)
    {
        if(b%2==1)
            ans=(ll)ans*a%MOD;
        a=(ll)a*a%MOD;
        b/=2;
    }
    return ans;
}

int main()
{
    fin>>n>>k;
    if(n%k==0)
        fout<<(ll)fact(k)*(ll)expow(fact(n/k),k)%(ll)MOD<<"\n";
    else
    {
        ll rest=n%k;
        fout<<(ll)fact(rest)*(ll)expow(fact(n/k+1),rest)%(ll)MOD*(ll)fact(k-rest)%(ll)MOD*(ll)expow(fact(n/k),k-rest)%(ll)MOD<<"\n";
    }
    return 0;
}
/**

8
1 2 7 3 4 8 5 6


**/