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] = 0x7DA7_5BB3;
  15. seed[1] = 0xE1F2_C6E1;
  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.27s 47836KB
stdin
Standard input is empty
stdout
cycle: 11123 to 14374 len 3252
length: 1000000
unique: 14375
last: 1ce68ad5
 93  92  83  80  88  87  81 100  77  82  85  80  84  90  75  76 
 90  79  87  78  96  96 100  84  87  89  84  89  89  82  78  87 
 90  87  92  81  91  88  99  91  84 100  95  85  94  93  94  87 
 93  89  86  80  99  92  97  91  94  95  90  98  93  87 100  93 
 80  97  83 100  88  88  88  80  96  87  95  76  83  81  88  92 
 83  82  98  85  95  84  82  88  89  79  94  80  89 100  95  94 
 82  79  84  82  92  82  82  80  82 100  82  90  87  81  82  87 
 96 100  80  90 100  95  99  82  79  94 100  95  75  94  92  95