Cod sursa(job #2279213)
Utilizator | Data | 9 noiembrie 2018 09:59:35 | |
---|---|---|---|
Problema | 1-sir | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 1.08 kb |
#include <iostream>
#include <math.h>
using namespace std;
int s[257], N, S, as, ev, k, nr;
void init()
{
s[k]=0;
}
int succesor()
{
if(s[k]<N-1)
{
s[k]++;
return 1;
}
return 0;
}
int valid()
{
if(k>=2)
if(abs(s[k]-s[k-1])!=1)
return 0;
return 1;
}
int solutie()
{
int S2=0;
for(int i=1; i<=k; i++)
S2=S2+s[i];
if(S2==S && k==N)
return 1;
return 0;
}
void tipar()
{
for(int i=1; i<=k; i++)
cout << s[i];
cout << endl;
}
int main()
{
cin >> N >> S;
k=2;
while(k>1)
{
do
{
as = succesor();
if(as)
ev = valid();
} while(!((as && ev) || !(as)));
if(as)
{
if(solutie())
{
nr++;
tipar();
}
else
{
k++;
init();
}
}
else
k--;
}
cout << nr;
}