利用3的倍数算砝码问题:
巧妙转化为进制的问题
package test10; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class test { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String x = Integer.toString(n,3); List<Integer> list = new ArrayList<>(); char[] arr = new StringBuilder(x).reverse().toString().toCharArray(); for(int i = 0;i < arr.length;i++){ if(arr[i] == '2'){ list.add(0,-1); if(i == arr.length - 1){ list.add(0,1); }else{ arr[i+1]++; } }else if(arr[i] == '3'){ list.add(0,0); if(i == arr.length - 1){ list.add(0,1); }else{ arr[i+1]++; } }else{ list.add(0,arr[i]-'0'); } } StringBuilder sb = new StringBuilder(); for(int i = 0;i < list.size();i++){ if(list.get(i) == 1){ sb.append("").append((int)Math.pow(3, list.size()-i-1)); } if(list.get(i) == -1){ sb.append("-").append((int)Math.pow(3, list.size()-i-1)); } } System.out.println(sb); } }