Advertisement
Guest User

fräs2.0

a guest
Feb 9th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.99 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class Euler32super {
  4.  
  5.     static boolean check(int n)
  6.     {
  7.         int digits = 0; int count = 0; int tmp;
  8.  
  9.         for (; n > 0; n /= 10, ++count)
  10.         {
  11.             if ((tmp = digits) == (digits |= 1 << (n - ((n / 10) * 10) - 1)))
  12.                 return false;
  13.         }
  14.  
  15.         return digits == (1 << count) - 1;
  16.     }
  17.  
  18.     public static void main(String[] args) {
  19.         long t1 = System.nanoTime();
  20.         int s = 0;
  21.         HashSet<Integer> set = new HashSet<Integer>();
  22.         for (int a = 4; a < 49; a++) {
  23.             for (int b = 157; b < 7860/a; b++) {
  24.                
  25.                 int c = a*b;
  26.                 int f1 = 1000;
  27.                 if (c >= 10000) {
  28.                     f1 = 100000;
  29.                 } else if (c >= 1000) {
  30.                     f1 = 10000;
  31.                 }
  32.                 int f2 = (b >= 1000 ? 10000*f1 : 1000*f1);
  33.                 int n = f2*a+f1*b+c;
  34.  
  35.                 if (n >= 123456789 && check(n) && !set.contains(c)) {
  36.                     s += c;
  37.                     set.add(c);
  38.                 }
  39.             }
  40.         }
  41.         long t2 = System.nanoTime();
  42.         System.out.println((t2-t1)/1000);
  43.         System.out.println(s);
  44.     }
  45.  
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement