fork(1) download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public static void main (String[] args) throws java.lang.Exception
  11. {
  12. // your code goes here
  13. long[] seed = new long[1000000];
  14. seed[0] = 1;
  15. seed[1] = 3;
  16. int[][] t = new int[8][16];
  17. Map<Long, Integer> map = new TreeMap<Long, Integer>();
  18. map.put(seed[0], 0);
  19. map.put(seed[1], 1);
  20. int last = seed.length, first = 0;
  21. for (int i = 2; i < seed.length; i++)
  22. {
  23. seed[i] = seed[i - 2] ^ (seed[i - 1] >> ((i - 1) & 0xF)) ^ (seed[i - 1] << ((i + i + 1) & 0xF));
  24. seed[i] &= 0xFFFF_FFFFL;
  25. long e = seed[i];
  26. if (map.containsKey(e)) {
  27. first = map.get(e);
  28. last = i;
  29. System.out.println("cycle: " + map.get(e) + " to " + (i - 1) + " len " + (i - map.get(e)));
  30. break;
  31. }
  32. map.put(e, i);
  33. if (e == 0L) throw new RuntimeException("ZERO!! " + i);
  34. }
  35. for (int i = first; i < last; i++)
  36. {
  37. long e = seed[i];
  38. for (int j = 0; j < 8; j++)
  39. {
  40. t[j][(int)(e & 0xFL)]++;
  41. e >>= 4;
  42. }
  43. }
  44. System.out.println("length: " + seed.length);
  45. System.out.println("unique: " + map.size());
  46. System.out.printf("last: %8x%n", seed[last - 1]);
  47. for (int i = 0; i < 8; i++)
  48. {
  49. int m = 0;
  50. for (int j = 0; j < 16; j++)
  51. {
  52. m = Math.max(m, t[i][j]);
  53. }
  54. for (int j = 0; j < 16; j++)
  55. {
  56. System.out.printf("%3d ", 100 * t[i][j] / m);
  57. }
  58. System.out.println();
  59. }
  60. }
  61. }
Success #stdin #stdout 0.4s 50952KB
stdin
Standard input is empty
stdout
cycle: 34743 to 46578 len 11836
length: 1000000
unique: 46579
last: 539815b4
 90  87  99  91  85  87  89 100  84  91  99  90  90  95  89  89 
 94  95  99  97 100  96  94  97  94  99  99  99  98  95  96  95 
 92  89  93  93  92  88  94  93  91 100  95  92  89  88  98  91 
 94  95  99  96  96  98  97  91  94  90  92 100  90  96  91  96 
 92 100  94  96  93  89  90  93  91  91  96  95  92  88  97  94 
 91  94  99  87  98  96  92  92  88  95  93  95  94  90 100  93 
 94  97  97  98  98  91  94  93  96  96 100  97  95  93  98  87 
 94  90  87  92  90  96  87 100  91  94  95  91  97  91  96  90