Pagini recente » Cod sursa (job #208310) | Cod sursa (job #775204) | Cod sursa (job #2518759) | Cod sursa (job #1027859) | Cod sursa (job #994202)
Cod sursa(job #994202)
#include<stdio.h>
FILE *f = fopen("kperm.in","r");
FILE *g = fopen("kperm.out","w");
#define MOD 666013
int N,K,Sol;
int V[100],B[100];
void citire(void)
{
fscanf(f,"%d %d",&N,&K);
}
inline int verif(void)
{
int sum = 0;
for(int i=1;i<=N;i++)
{
sum += V[i];
if(i >= K)
{
sum -= V[i-K];
if(sum%K)
return 0;
}
}
return 1;
}
inline void back(int k)
{
if(k == N+1)
{
Sol += verif();
if(verif()){for(int i=1;i<=N;i++)
printf("%d ",V[i]%K);
//if(verif())
printf(" Este");
printf("\n");}
return ;
}
for(int i=1;i<=N;i++)
if(!B[i])
{
V[k] = i;
B[i] = 1;
back(k+1);
B[i] = 0;
}
}
inline int Perm(int P)
{
int Prod = 1;
for(int i=1;i<=P;i++)
Prod = (1LL*Prod*i)%MOD;
return Prod;
}
inline int Put(int baza,int exp)
{
int Prod = 1;
for(int i=1;i<=exp;i++)
Prod = (1LL*Prod*baza)%MOD;
return Prod;
}
void Rezolvare(void)
{
if(K%2 == 0)
return ;
int C = N%K;
int R = N/K;
Sol = 1LL*Perm(C)*Perm(K-C)%MOD;
Sol = 1LL*Sol*Put(Perm(R+1),C)%MOD;
Sol = 1LL*Sol*Put(Perm(R),K-C)%MOD;
}
int main()
{
/*for(int i=2;i<=12;i++)
for(int j=2;j<=i;j++)
{
N = i, K = j;
Sol = 0;
back(1);
printf("%d %d = %d\n",N,K,Sol);
}*/
citire();
//back(1);
Rezolvare();
fprintf(g,"%d\n",Sol);
}