Cod sursa(job #1809010)

Utilizator robx12lnLinca Robert robx12ln Data 18 noiembrie 2016 16:11:27
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include<fstream>
#define MOD 666013
using namespace std;
ifstream fin("kperm.in");
ofstream fout("kperm.out");
long long f[5005];
int  n, k;
long long lgput( long long x, long long p ){
    long long r = 1;
    while( p != 0 ){
        if( p % 2 == 1 ){
            r = r * x % MOD;
        }
        x = x * x % MOD;
        p /= 2;
    }
    return r % MOD;
}
int main(){
    fin >> n >> k;
    f[0] = 1;
    for( int i = 1; i <= n; i++ ){
        f[i] = f[i - 1] * i % MOD;
    }
    if( k % 2 == 0 ){
        fout << 0;
        return 0;
    }
    if( n % k == 0 ){
        fout << f[k] * lgput( f[n / k], k ) % MOD;
    }else{
        long long R = n % k;
        fout << f[R] * f[k - R] % MOD * lgput( f[n / k], k - R ) % MOD * lgput( f[n / k + 1], R ) % MOD;
    }
    return 0;
}