Cod sursa(job #2330400)

Utilizator Dobricean_IoanDobricean Ionut Dobricean_Ioan Data 28 ianuarie 2019 12:32:03
Problema Kperm Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 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(k%2==0)
    {
        fout<<"0\n";
        return 0;
    }
    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;
}