Pagini recente » Cod sursa (job #3256225) | Cod sursa (job #257764) | Cod sursa (job #2058529) | Cod sursa (job #2855544) | Cod sursa (job #1586376)
#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();
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;
}