Cod sursa(job #1577175)

Utilizator Mihai9Oniga Mihai Mihai9 Data 23 ianuarie 2016 12:00:18
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
using namespace std;
ifstream f("kperm.in");
ofstream g("kperm.out");
const int MOD = 666013;
int n, k;
int fact(int n) {
    int ret = 1;
    for(int i = 2; i <= n; ++i) {
        ret = (1LL * ret * i) % MOD;
    }
    return ret;
}
int expo(int a, int b) {
    int ret = 1;
    while(b) {
        if(b % 2) {
            ret = (1LL * ret * a) % MOD;
        }
        a = (1LL * a * a) % MOD;
        b /= 2;
    }
    return ret;
}
int main() {
    f >> n >> k;
    int ans;
    if(k % 2 == 0) {
        ans = 0;
    }
    else {
        ans = (1LL * fact(n % k) * fact(k - (n % k))) % MOD;
        ans = (1LL * ans * expo(fact(n / k + 1), n % k)) % MOD;
        ans = (1LL * ans * expo(fact(n / k), k - (n % k))) % MOD;
    }
    g << ans << "\n";
    return 0;
}