Cod sursa(job #657818)

Utilizator tzipleatudTudor Tiplea tzipleatud Data 7 ianuarie 2012 14:39:57
Problema Kperm Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

ifstream f("kperm.in");
ofstream g("kperm.out");

int n,k,c,r,m=666013,i;
unsigned long long t[5001],sol;


unsigned long long lg_pow(unsigned long long b,unsigned long long p) {
  unsigned long long x,r;
  for (x=b,r=1;p>0;p>>=1) {
    if ((p & 1) !=0)
        r=r*x % m;
    x=x*x%m;
  }
  return r%m;
}


int main () {
    f >> n >> k;
    if (k%2==0) {
        g << 0 << '\n';
        f.close();g.close();
        return 0;
    }
    t[0]=1;
    for (i=1;i<=n;i++) t[i]=(t[i-1]*i)%m;
    r=n%k;c=n/k;
    sol=(t[r]*t[k-r])%m;
    sol=(sol*lg_pow(t[c+1],r))%m;
    sol=(sol*lg_pow(t[c],k-r))%m;
    g << sol << '\n';
    f.close();g.close();
    return 0;
}