Pagini recente » Cod sursa (job #670233) | Cod sursa (job #1960015) | Cod sursa (job #2988391) | Cod sursa (job #2123928) | Cod sursa (job #29644)
Cod sursa(job #29644)
#include<fstream>
using namespace std;
int posibil(int pos,int x[11])
{
int i;
for(i=pos-1;i>=1;i--)
if(x[pos]==x[i]) return 0;
return 1;
}
int solutie(int n,int x[11],int k)
{
int i,j,s;
for(i=1;i<=n-k+1;i++)
{ s=0;
for(j=i;j<=i+k-1;j++)
s+=x[j];
if(s%k!=0) return 0;
}
return 1;
}
int back(int n,int k,int x[11])
{
int i,pos,ok,res=0;
pos=1;
x[pos]=0;
while(pos>0)
{
ok=0;
while(x[pos]<n && ok==0)
{
x[pos]++;
ok=posibil(pos,x);
}
if(ok)
if(pos==n) { if(solutie(n,x,k)) res++; }
else { pos++; x[pos]=0; }
else pos--;
}
return res;
}
int main()
{
int n,k,x[11];
ifstream fin("kperm.in");
fin>>n>>k;
fin.close();
ofstream fout("kperm.out");
fout<<back(n,k,x);
fout.close();
}