Cod sursa(job #1256011)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 5 noiembrie 2014 18:04:37
Problema Kperm Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>
#include <bitset>
#define DIM 50011
#define MOD 666013
using namespace std;
ifstream f("kperm.in");
ofstream g("kperm.out");
long long n,c,k,r,q1,q2,q3,q4;

inline long long up(long long a,long long b){
    if(b==0)
        return 1;
    else{
        long long q=up(a,b/2);
        q*=q,
        q%=MOD;
        if(b%2) q*=a;
        return q%MOD;
    }
}


long long F[DIM];

int main(void){

    f>>n>>k;
    if(!k){
        g<<"0";
        return 0;
    }
    F[0] = 1;
    for (long long i=1;i<=n;i++)
        F[i] = F[i-1]*i%MOD;
    //ciur();
    r=n%k,c=n/k;
    q1=F[r],q2=F[k-r];
    q3=F[c+1],q3=up(q3,r);
    q4=F[c],q4=up(q4,k-r);
    q1=(((q1*q2)%MOD)*((q3*q4)%MOD))%MOD;
    g<<q1;
    return 0;
}