Pagini recente » Cod sursa (job #839819) | Cod sursa (job #720067) | Cod sursa (job #96504) | Cod sursa (job #1995645) | Cod sursa (job #2330355)
#include <fstream>
using namespace std;
const int mod=666013;
long long fact(int k)
{
long long p=1;
for(int i=1; i<=k; i++)
{
p=(long long)p*i;
p=(long long)p%mod;
}
return p;
}
long long put(int x,int a)
{
long long p=1;
for(int i=1; i<=a; i++)
{
p=(long long)p*x;
p=(long long)p%mod;
}
return p;
}
int main()
{
ifstream cin("kperm.in");
ofstream cout("kperm.out");
int k,n;
cin>>n>>k;
if(k%2==0)
{
cout<<"0";
return 0;
}
if(n>=k*2)
{
if(n%k!=0)
{
int r=n%k;
long long sol=1;
sol=fact(r);
sol=(long long)sol*(put(fact(n/k+1),r));
sol=(long long)sol%mod;
sol=(long long)sol*fact(k-r);
sol=(long long)sol%mod;
sol=(long long)sol*(put(fact(n/k),k-r));
sol=(long long)sol%mod;
cout<<sol;
}
else
{
long long sol=1;
sol=fact(k);
sol=(long long)sol*(put(fact(n/k),k));
sol=(long long)sol%mod;
cout<<sol;
}
}
if(n==k)
cout<<fact(n);
if(n>k and n<2*k)
{
int r=n%k;
long long sol=1;
sol=fact(r);
sol=(long long)sol*(put(2,r));
sol=(long long)sol%mod;
sol=(long long)sol*(fact(k-r));
sol=(long long)sol%mod;
cout<<sol;
}
return 0;
}