Pagini recente » Cod sursa (job #1396062) | Cod sursa (job #2093440) | Cod sursa (job #415394) | Cod sursa (job #2931863) | Cod sursa (job #1144180)
/*#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int s,n,x[501],a[501],M[501],k;
void afisare()
{
int i;
for(i=1;i<=n;i++)
cout<<x[i]<<" de "<<a[i]<<"\n";
cout<<"\n";
}
void functie(int j,int aux)
{
int i,z;
for(i=j;i<=n;i++)
{
int MM=aux/a[i];
for(z=0;z<=MM;z++)
{
x[i]=z;
if(aux-z*a[j]==0)
afisare();
else if(aux-z*a[j]>0)
functie(j+1,aux-z*a[j]);
}
}
}
int main()
{
int i,j;
freopen("bani.in","r",stdin);
freopen("bani.out","w",stdout);
cin>>s>>n;
for(i=1;i<=n;i++)
cin>>a[i],M[i]=s/a[i];
i=1;
functie(i,s);
cout<<k<<"\n";
return 0;
}
*/
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int s,n,x[501],a[501],k;
int cmp(const void *pp, const void *qq)
{
return *(int *)qq-*(int *)pp;
}
void afisare()
{
int i;
for(i=1;i<=n;i++)
cout<<x[i]<<" de "<<a[i]<<"\n";
cout<<"\n";
}
void functie(int i, int aux)
{
int j;
for(j=i;j<=n;j++)
{
x[j]=aux/a[j];
aux-=x[j]*a[j];
if(aux==0)
afisare(),k++;
while(x[j])
{
functie(j+1,aux);
x[j]--;
aux+=a[j];
}
}
}
int main()
{
int i,j;
freopen("bani.in","r",stdin);
freopen("bani.out","w",stdout);
cin>>s>>n;
for(i=1;i<=n;i++)
cin>>a[i];
qsort(a+1,n,sizeof(a[1]),cmp);
i=1;
functie(i,s);
cout<<k<<"\n";
return 0;
}