利用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);
}
}
本文介绍了一种将利用3的倍数问题转换为进制的方法,通过编程实例展示了如何使用Java解决这个问题。通过`packagetest10`中的代码,理解如何通过字符串操作和数学计算来找到合适的砝码组合。
8148

被折叠的 条评论
为什么被折叠?



