Cod sursa(job #1912327)

Utilizator GabiTulbaGabi Tulba-Lecu GabiTulba Data 8 martie 2017 01:01:59
Problema Kperm Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#include <bitset>
#include <algorithm>
#include <cmath>
#define MaxN 5005
#define MOD 666013
using namespace std;
  
FILE*IN,*OUT;

long long N,K,C,R,Answer=1,f[MaxN];
long long LogPow(long long base,int exp)
{
	if(exp==0)return 1;
	long long act=1;
	for(int pos=0;pos<=20;pos++)
	{
		if(exp&(1<<pos))
			act=(act*base)%MOD;
		base=(base*base)%MOD;
	}
	return act;
}
int main()
{
    IN=fopen("kperm.in","r");
    OUT=fopen("kperm.out","w");

	fscanf(IN,"%d%d",&N,&K);

	f[0]=1;
	for(int i=1;i<=N;i++)
		f[i]=(f[i-1]*i)%MOD;

	C=N/K,R=N%K;
	Answer=(f[R]*f[K-R])%MOD;
	Answer=(Answer*LogPow(f[C+1],R))%MOD;
	Answer=(Answer*LogPow(f[C],K-R))%MOD;
	fprintf(OUT,"%d",Answer);
	
	return 0;
}