#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