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. String s = br.readLine();
  13. String[] s1 = s.split(" ");
  14. int N = Integer.parseInt(s1[0]); // N -> target number
  15. int n = Integer.parseInt(s1[1]); // n -> size of the array
  16. String s2 = br.readLine();
  17. int[] arr = new int[n];
  18. String[] s3 = s2.split(" ");
  19. for (int i = 0; i < n; i++) {
  20. arr[i] = Integer.parseInt(s3[i]);
  21. }
  22. ArrayList<Integer> ans = reachN(N, arr);
  23.  
  24. int ans_len = ans.size();
  25. for(int i = ans_len - 1; i>=0; i--){
  26. System.out.print(ans.get(i) + " ");
  27. }
  28. }
  29. public static ArrayList<Integer> reachN(int N, int[] arr){
  30. ArrayList<Integer> ans = new ArrayList<>();
  31.  
  32. if(N == 1){ // no multiplications are required
  33. return ans;
  34. }
  35.  
  36. Arrays.sort(arr); // for lexicographical order
  37.  
  38. int n = arr.length;
  39.  
  40. for(int i=n-1; i>=0; i--){
  41. if(N == 1){
  42. break;
  43. }
  44. while(N!=1 && N % arr[i] == 0){ // adding N to the answer
  45. ans.add(arr[i]);
  46. N = N / arr[i];
  47. }
  48. }
  49.  
  50. if(N != 1){ // target has not been reached
  51. ans = new ArrayList<>();
  52. ans.add(-1);
  53. }else{
  54. ans.add(1); // adding 1 to the answer if product goes from 1 to N
  55. }
  56. return ans;
  57. }
  58.  
  59. }
Success #stdin #stdout 0.09s 36212KB
stdin
12 3
2 3 4
stdout
1 3 4