Pagini recente » Cod sursa (job #1719179) | Cod sursa (job #2395252) | Cod sursa (job #55076) | qwerty-1 | Cod sursa (job #25569)
Cod sursa(job #25569)
using namespace std;
#include<stdio.h>
#include<fstream>
int n,k,x[5005],act,sol=0;
char viz[5005];
void go(int i)
{
int j;
for(j=1;j<=n;j++)
if(i<k || (i>=k&&(j+act)%k==0) )
if(viz[j]==0)
{
x[i]=j;
viz[j]=1;
if(i==n)
{
sol++;
viz[j]=0;
}
else
{
act+=j;
if(i-k+1>0)
act-=x[i-k+1];
go(i+1);
act-=j;
if(i-k+1>0)
act+=x[i-k+1];
viz[j]=0;
}
}
}
int main()
{
FILE *fin=fopen("kperm.in","r"),
*fout=fopen("kperm.out","w");
fscanf(fin,"%d%d",&n,&k);
memset(viz,0,sizeof viz);
act=0;
go(1);
fprintf(fout,"%d\n",sol);
fclose(fin);
fclose(fout);
return 0;
}