Pagini recente » Cod sursa (job #465341) | Cod sursa (job #228699) | Cod sursa (job #2415822) | Cod sursa (job #3210458) | Cod sursa (job #870423)
Cod sursa(job #870423)
#include <iostream>
using namespace std;
int n;
long sol[100];
long frecventa[100];
long long factorial(int x)
{
if(x==0 || x==1)return 1;
else
return (x*factorial(x-1));
}
void back(int poz,int ultimul)
{
long long prod=factorial(n);
long sum=0;
for(register int j=1;j<poz;j++)
{
sum+=sol[j];
prod/=sol[j];
}
if(sum==prod)
{
for(register int j=1;j<poz;j++)
{
cout<<sol[j]<<' ';
}
cout<<endl;
}
//cout<<"Aici suma este "<<sum<<" si produsul este "<<prod<<"."<<endl;
for(register int i=ultimul+1;i<=n;i++)
{
if(frecventa[i]==0)
{
frecventa[i]=1;
sol[poz]=i;
back(poz+1,i);
frecventa[i]=0;
}
}
return ;
}
int main()
{
cin>>n;
cout<<"Are factorialul "<<factorial(n)<<endl;
back(0,0);
system("PAUSE");
return 0;
}