Pagini recente » Cod sursa (job #1689486) | Cod sursa (job #940352) | Cod sursa (job #2886573) | Cod sursa (job #1300164) | Cod sursa (job #612559)
Cod sursa(job #612559)
#include<fstream.h>
#define lul unsigned long long
#define N 666013
lul n,k,fact[2502],r,c,m,i;
lul put(lul x,lul n)
{lul i,x1=x,x2=(x*x)%N,k=0,v[14];
while(n)
v[++k]=n%2,n/=2;
for(i=k-1;i;i--)
if(!v[i])
x2=(x1*x2)%N,x1=(x1*x1)%N;
else
x1=(x1*x2)%N,x2=(x2*x2)%N;
return x1;}
int main()
{ifstream f("kperm.in");
ofstream g("kperm.out");
f>>n>>k;
if(k%2==0)
g<<"0";
else
{c=n/k,r=n%k;
fact[0]=1;
m=r;
if(k-r>m)
m=k-r;
if(c+1>m)
m=c+1;
for(i=1;i<=m;i++)
fact[i]=(i*fact[i-1])%N;
g<<((((fact[r]*fact[k-r])%N)*((put(fact[c],k-r)*put(fact[c+1],r))%N))%N);}
return 0;}