fork(2) download
  1. import java.util.*;
  2. import java.lang.*;
  3. import java.io.*;
  4.  
  5. class Ideone
  6. {
  7. public static long collatz(int maxN)
  8. {
  9. long res = 0;
  10. long n = 1;
  11. long count = 0;
  12. long largestCount = 0;
  13. long t = 0;
  14.  
  15. for (long k = 1; k <= maxN; k++)
  16. {
  17. n = k;
  18.  
  19. // reset to zero
  20. count = 0;
  21.  
  22. // count how many steps to get to 1
  23. while (n != 1)
  24. {
  25. // n = collatz(n)
  26. if ((n % 2) == 0)
  27. {
  28. n = n / 2;
  29. }
  30. else
  31. {
  32. n = 3 * n;
  33. n++;
  34. }
  35.  
  36. // count the step
  37. count++;
  38. }
  39.  
  40. // check for maximum count
  41. if (count > largestCount)
  42. {
  43. largestCount = count;
  44. res = k;
  45. }
  46. }
  47.  
  48. // log
  49. System.out.println("# MAX = "+maxN+", N = "+res+", Steps = "+largestCount);
  50.  
  51. // return maximum solution
  52. return res;
  53. }
  54.  
  55. public static void main (String[] args) throws java.lang.Exception
  56. {
  57. collatz(20);
  58. collatz(50);
  59. collatz(100);
  60. collatz(1000);
  61. collatz(10000);
  62. collatz(100000);
  63. // collatz(1000000);
  64. }
  65. }
Time limit exceeded #stdin #stdout 5s 320576KB
stdin
Standard input is empty
stdout
# MAX = 20, N = 18, Steps = 20
# MAX = 50, N = 27, Steps = 111
# MAX = 100, N = 97, Steps = 118
# MAX = 1000, N = 871, Steps = 178
# MAX = 10000, N = 6171, Steps = 261
# MAX = 100000, N = 77031, Steps = 350