fork 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] = 1;
  15. seed[1] = 0;
  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.8s 317584KB
stdin
Standard input is empty
stdout
length: 2500000
unique: 2499998
last: 2f30bd43
 99  99  99  99  99  99  99  99 100  99  99  99  99  99  99  99 
 98  99  99  98  99  99  99  99  98  98  98  99  98  99 100  99 
 99  99  99  99  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 100  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 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