Cod sursa(job #1914792)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 8 martie 2017 18:34:52
Problema Kperm Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>

using namespace std;

const int MOD = 666013;

int fact(int nr) {
    int ans = 1;
    for (int i = 1; i <= nr; ++ i)
        ans = (1LL * ans * i) % MOD;
    return ans;
}

int raise(int a, int b) {
    int ans = 1;
    for (int i = 1; i <= b; ++ i)
        ans = (1LL * ans * a) % MOD;
    return ans;
}

int main()
{
    ifstream cin("kperm.in");
    ofstream cout("kperm.out");

    int N, K;
    cin >> N >> K;

    int x = N % K;
    int y = K - x;

    int nrx = N / K + 1;
    int nry = N / K;

    int ans1 = (1LL * fact(x) * fact(y)) % MOD;
    int ans2 = (1LL * raise(fact(nrx), x) * raise(fact(nry), y)) % MOD;
    int ans = (1LL * ans1 * ans2) % MOD;

    cout << ans << '\n';
    return 0;
}