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[2500000];
  14. seed[0] = 0x9876_5432L;
  15. seed[1] = 0xF1E2_D3C4L;
  16. int[][] t = new int[8][16];
  17. Map<Long, Integer> map = new TreeMap<Long, Integer>();
  18. int last = seed.length, first = 0;
  19. for (int i = 2; i < seed.length; i++)
  20. {
  21.  
  22. seed[i] = seed[i - 2] ^ (seed[i - 1] >> ((i - 1) & 0xF)) ^ (seed[i - 1] << ((i + i + 1) & 0xF));
  23. seed[i] &= 0xFFFF_FFFFL;
  24. long e = (seed[i - 2] << 32) | seed[i - 1];
  25. if (map.containsKey(e)) {
  26. first = map.get(e);
  27. last = i;
  28. System.out.println("cycle: " + map.get(e) + " to " + (i - 1) + " len " + (i - map.get(e)));
  29. break;
  30. }
  31. map.put(e, i);
  32. if (e == 0L) throw new RuntimeException("ZERO!! " + i);
  33. }
  34. for (int i = first; i < last; i++)
  35. {
  36. long e = seed[i];
  37. for (int j = 0; j < 8; j++)
  38. {
  39. t[j][(int)(e & 0xFL)]++;
  40. e >>= 4;
  41. }
  42. }
  43. System.out.println("length: " + seed.length);
  44. System.out.println("unique: " + map.size());
  45. System.out.printf("last: %8x%n", seed[last - 1]);
  46. for (int i = 0; i < 8; i++)
  47. {
  48. int m = 0;
  49. for (int j = 0; j < 16; j++)
  50. {
  51. m = Math.max(m, t[i][j]);
  52. }
  53. for (int j = 0; j < 16; j++)
  54. {
  55. System.out.printf("%3d ", 100 * t[i][j] / m);
  56. }
  57. System.out.println();
  58. }
  59. }
  60. }
Success #stdin #stdout 4.84s 317616KB
stdin
Standard input is empty
stdout
length: 2500000
unique: 2499998
last: d39d5aea
 99  99 100  99  99  99  99  99  99  99  99  99  99  99  99  99 
 99  99  99 100  99  99  99  99  99  99  99  99  99  99  99  99 
 99  99  99  99  99  99  99  99 100  99  99  99  99  99  99  99 
 99  99  99  99  99  99 100  99  99  99  99  99  99  98  99  99 
 99  99  99  99  99  99  99 100  99  99  99  99  99  99  99  99 
 98  99  99  99  99  98  99 100  99  99  99  99  99  99  99  99 
 99  99  99  99 100  99  99  98  99  99  99  99  99  99  99  99 
 99  99  99  99  99  99  99  99  98  99  99 100  99  99  99  99