解法一:进制转换+回文数判断

  1. import java.io.*;
  2. import java.util.*;
  3. public class Main {
  4. public static void main(String[] args) throws IOException {
  5. StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
  6. PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
  7. in.nextToken();
  8. int N = (int) in.nval;
  9. in.nextToken();
  10. int b = (int) in.nval;
  11. List<Integer> list = new ArrayList<>();
  12. while (N > 0) {
  13. list.add(N % b);
  14. N /= b;
  15. }
  16. boolean flag = true;
  17. int len = list.size();
  18. for (int i = 0; i < len / 2; ++i) {
  19. if (!list.get(i).equals(list.get(len - i - 1))) {
  20. flag = false;
  21. break;
  22. }
  23. }
  24. if (flag) {
  25. out.println("Yes");
  26. } else {
  27. out.println("No");
  28. }
  29. for (int i = len - 1; i > 0; --i) {
  30. out.print(list.get(i) + " ");
  31. }
  32. out.println(list.get(0));
  33. out.flush();
  34. }
  35. }