import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
public class problem32
{
public static void main(String[] args) {
long tiempo = System.currentTimeMillis();
HashSet b= new HashSet();
String cad;
String n;
for (int i = 1; i < 8; i++) {
for (int j = 1000; j < 10000; j++)
{
cad=Integer.toString(i*j);
n= Integer.toString(i)+Integer.toString(j);
if((n+cad).length()==9)
{
if(ispandigital(n+cad))
{
b.add(i*j);
}
}
}
}
for (int i = 10; i < 100; i++) {
for (int j = 100; j < 1000; j++)
{
cad=Integer.toString(i*j);
n= Integer.toString(i)+Integer.toString(j);
if((n+cad).length()==9)
{
if(ispandigital(n+cad))
{
b.add(i*j);
}
}
}
}
int c =0;
for( Iterator it = b.iterator(); it.hasNext(); ) {
c=c+it.next(); }
System.out.println(c);
System.out.println(System.currentTimeMillis()-tiempo);
}
public static boolean isPandigital(String all){
if(all.length() != 9) return false;
String arr[] = all.split("");
for(int i=1; i<=9; ++i){
boolean varMi = false;
String son = Integer.valueOf(i).toString();
for(int j=0; j<10; ++j){
if(arr[j].equals(son)){
varMi = true;
break;
}
}
if(!varMi) return false;
}
return true;
}
public static boolean ispandigital(String x)
{
boolean v[]= new boolean[10];
for (int i = 0; i < x.length(); i++)
{
v[x.charAt(i)-48]=true;
}
for (int i = 1; i < 10; i++)
{
if(!v[i])
return false;
}
return true;
}
}
domingo, 19 de febrero de 2012
project euler # 32
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario