#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#include <stdlib.h>
using namespace std;
bool esPrimo(int n)
{
if((n&1)==0)
return (n==2);
double raiz = sqrt(n);
for(int i = 3; i<=raiz ; i+=2)
if((n%i) == 0)
return false;
return true;
}
string parseString(int n)
{
string sol = "";
while(n>0)
sol = (char)((n%10)+'0')+sol , n/=10;
return sol;
}
bool esValido(string cad)
{
for(int i= 0 ; i<cad.size(); i++)
if(cad[i]=='0')
return false;
return true;
}
int main()
{
bool probados[10000]= {false};
for(int n = 1488; n<=9999; n++)
{
if(!probados[n])
{
string num = parseString(n);
if(esValido(num))
{
vector<int> permutaciones;
do
{
int ent = atoi(num.data());
probados[ent] = true;
permutaciones.push_back(ent);
}
while(next_permutation(num.begin(),num.end()));
int nroPer =permutaciones.size();
for(int i = nroPer; i>=2 ; i--)
if(esPrimo(permutaciones[i]))
for(int j= i-1; j>=1 ; j--)
if(esPrimo(permutaciones[j]))
for(int k = j-1; k>=0; k--)
if(esPrimo(permutaciones[k]))
if(permutaciones[i]-permutaciones[j] == permutaciones[j]-permutaciones[k])
{
cout << permutaciones[k];
cout << permutaciones[j];
cout << permutaciones[i]<<endl;
return 0;
}
}
}
}
return 0;
}
miércoles, 11 de abril de 2012
Project Euler 49
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario