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(); HashSetb= 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