Pagini recente » Cod sursa (job #1855509) | Cod sursa (job #2976809) | Cod sursa (job #3291334) | Cod sursa (job #2444349) | Cod sursa (job #1586379)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin ("kperm.in");
ofstream fout ("kperm.out");
#define max(x,y) x<y?y:x;
const int mod = 666013 ;
long long int factorial[5100];
long long int putere (long long int x ,long long int y)
{
long long int put = 1;
while(y)
{
if (y%2)
{
put = (put*x)%mod;
}
y = y/2;
x=(x*x)%mod;
}
return put ;
}
int main()
{
long long int n ,k ,m ,r ;
fin >> n >> k;
fin.close();
if(k % 2 == 0)
{
fout << 0 ;
return 0;
fout.close();
}
m = n/k;
r = n%k;
long long int maxim = max(m+1,k-r);
maxim = max(maxim,r);
factorial[0]=1;
factorial[1]=1;
for ( int i =2 ; i <=maxim ; i++)
factorial[i] = (i*factorial[i-1])%mod;
if( n == k)
{
fout << factorial[n];
}
else
{
long long int putere1 = putere ( factorial[m+1] ,r);
long long int putere2 = putere ( factorial[m] , k-r);
long long int rez = (factorial[r]*factorial[k-r])%mod;
rez = (rez*putere2)%mod;
rez = (rez*putere1)%mod;
fout << rez;
}
fout.close();
return 0;
}