Advertisement
Guest User

charles

a guest
Jun 26th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3.  
  4. public class Solution {
  5. private static long[] arr;
  6. private static int max;
  7. public static void main(String[] args) {
  8. /* Enter your code here. Read input from STDIN. Prlong output to STDOUT. Your class should be named Solution. */
  9. Scanner scan = new Scanner(System.in);
  10.  
  11. int q = scan.nextInt();
  12.  
  13. int[] qer = new int[q];
  14.  
  15. max = -1;
  16. while (q > 0) {
  17. int x = scan.nextInt();
  18. if(x > max){
  19. max = x;
  20. }
  21. qer[qer.length - q] = x;
  22. q--;
  23. }
  24.  
  25. arr = new long[max + 1];
  26.  
  27. for(int i = 2; i < arr.length ; i++){
  28. if(arr[i] == 0){
  29. arr[i] = solve(i);
  30. }
  31. }
  32.  
  33. for(int i = 0; i < qer.length; i++) {
  34. max = 0;
  35. for(int j = 2; j <= qer[i]; j++){
  36. if(arr[j] >= arr[max]){
  37. max = j;
  38. }
  39. }
  40. System.out.println(max);
  41. }
  42. }
  43.  
  44. public static long solve(long n){
  45. if(n == 1){
  46. return 0;
  47. }
  48. if(n % 2 == 0) {
  49. if(n > max){
  50. return solve(n/2) + 1;
  51. }
  52. else if(arr[(int)(n/2)] != 0){
  53. arr[(int)n] = arr[(int)(n/2)] + 1;
  54. }
  55. else
  56. arr[(int) n] = solve((n/2)) + 1;
  57. }
  58. else{
  59. if( (3*n) + 1 > max ){
  60. return solve((3*n) + 1) + 1;
  61. }
  62. else if(arr[(int)((3*n) + 1)] != 0 ){
  63. arr[(int)n] = arr[(int)((3*n) + 1)] + 1;
  64. }
  65. else
  66. arr[(int)n] = solve((3*n) + 1) + 1;
  67. }
  68. //System.out.println("number: " + n + " len: " + arr[n]);
  69. return arr[(int) n];
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement