martes, 10 de abril de 2012

Project Euler 34

#include <iostream>

using namespace std;

int main()
{
    int sum = 0 ;
    int fac[10] = {1,1,2};
    for(int i = 3; i<=9; i++)
        fac[i] = i*fac[i-1];
    int num = 0;
    int n[5]= {0};
    for(n[0] = 0 ; n[0]<10 ; n[0]++)
        for(n[1] = 0 ; n[1]<10 ; n[1]++)
            for(n[2] = 0 ; n[2]<10 ; n[2]++)
                for(n[3] = 0 ; n[3]<10 ; n[3]++)
                    for(n[4]= 0 ; n[4]<10 ; n[4]++)
                    {
                        int pos = 0 ;
                        while(pos <=4 && n[pos]==0)
                            pos++;
                        if(fac[n[0]]+fac[n[1]]+fac[n[2]]+fac[n[3]]+fac[n[4]]-pos==num)
                        {
                            cout << n[0] << "! + ";
                            cout << n[1] << "! + ";
                            cout << n[2] << "! + ";
                            cout << n[3] << "! + ";
                            cout << n[4] << "! = " << num<< endl;

                            sum += num;
                        }
                        num++;
                    }
    cout << sum-3<< endl;
    /*Le restamos 3 por que en el enunciado
      indica que no hay que sumar 1! = 1 y 2! = 2
        */
    return 0;
}

No hay comentarios:

Publicar un comentario