Pagini recente » Cod sursa (job #436554) | Cod sursa (job #1736579) | Cod sursa (job #2723464) | Cod sursa (job #1441636) | Cod sursa (job #25573)
Cod sursa(job #25573)
/*#include "stdafx.h"
#include "infoarena.h"
#include <conio.h>/**/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _KPERM_
#ifdef _KPERM_
#ifndef _INC_CONIO
void clrscr()
{
freopen("kperm.out", "w", stdout);
}
void getch() {}
#else
void clrscr() {}
#endif
#define rep(i,n) for(i=0;i<n;i++)
#define min(a,b) (((a) < (b)) ? (a) : (b))
int a[5002];
int n, k;
int count;
void write()
{
int i,j;
int v = 1;
for(i=0;i<=n-k;i++)
{
int sum = 0;
for(j = i; j < i+k; j++)
sum+=a[j];
if (sum % k != 0) v = 0;
}
if (v)
{
//rep(i,n) printf("%d", a[i]);
//printf("\n");
count++;
if (count == 666013) count = 0;
}
}
void perm(int p)
{
if (p == n-1)
{
write();
return;
}
perm(p+1);
int c = a[p];
for (int i = p+1; i < n; i++)
{
a[p] = a[i];
a[i] = c;
perm(p+1);
a[i] = a[p];
}
a[p] = c;
}
int main()
{
int i;
//n=10,k=9;
clrscr();
FILE *fin = fopen("kperm.in", "r");
fscanf(fin, "%d %d", &n, &k);
if(k%2==0)
{
printf("0");
getch();
return 0;
}
rep(i,n) a[i] = i+1;
perm(0);
printf("%d", count);
getch();
return 0;
}
#endif