Pagini recente » Rating Stefan (stefan17) | Monitorul de evaluare | Profil mih97 | Istoria paginii utilizator/benis | Cod sursa (job #1556656)
#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[5000];
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;
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;
}