Cod sursa(job #870423)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 3 februarie 2013 13:27:33
Problema Factorial Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#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;
}