Cod sursa(job #1331745)

Utilizator AlexeiCapodistriaAlexei George Capodistria AlexeiCapodistria Data 1 februarie 2015 10:03:41
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
 
using namespace std;
 
ifstream in("kperm.in");
ofstream out("kperm.out");
 
typedef long long i64;
 
const i64 mod= 666013;
const i64 nmax= 5000;
 
i64 f[nmax+1];
 
i64 lgpow( i64 x, i64 y ) {
    i64 sol= 1;
    while ( y>0 ) {
        if ( y%2==1 ) {
            sol= (sol*x)%mod;
            --y;
        }
        x= (x*x)%mod;
        y/= 2;
    }
 
    return sol;
}
 
int main(  ) {
    f[0]= 1;
    for ( i64 i= 1; i<=nmax; ++i ) {
        f[i]= (f[i-1]*i)%mod;
    }
 
    i64 n, k;
    in>>n>>k;
 
    i64 sol= 0;
    if ( k%2==1 ) {
        sol= (f[k-n%k]*f[n%k]%mod)*(lgpow(f[n/k+1], n%k)*lgpow(f[n/k], k-n%k)%mod)%mod;
    }
    out<<sol<<"\n";
 
    return 0;
}