import java.util.Scanner;publicclassA028_天平称重_进制方式 {publicstaticvoidmain(String[] args){
Scanner sc =newScanner(System.in);int n = sc.nextInt();
String s ="";while(n >0){int t = n %3;
n /=3;
s += t;}char[] cArr = s.toCharArray();int[] arr =newint[cArr.length];for(int i =0; i < arr.length; i++){
arr[i]= cArr[i]-'0';}
s ="";for(int i =0; i < arr.length; i++){if(arr[i]==3){if(i < arr.length -1){
arr[i]=0;
arr[i +1]++;}else{
s +="0";
s +="1";break;}}elseif(arr[i]==2){if(i < arr.length -1){
arr[i]=9;
arr[i +1]++;}else{
s +="9";
s +="1";break;}}
s += arr[i];}int idx = s.length()-1;int ex =(int) Math.pow(3, idx);
String ans ="";while(idx >=0){char t = s.charAt(idx);if(t !='0'){if(t =='9'){
ans +="-"+ ex +" ";}else{
ans += ex +" ";}}
idx--;
ex /=3;}
System.out.println(ans);}}
将获取到的值转成三进制,并放在String里面👇
while(n >0){int t = n %3;
n /=3;
s += t;}
把String换成char,再进一步换成int,再将String置空👇
char[] cArr = s.toCharArray();int[] arr =newint[cArr.length];for(int i =0; i < arr.length; i++){
arr[i]= cArr[i]-'0';}
s ="";
for(int i =0; i < arr.length; i++){if(arr[i]==3){if(i < arr.length -1){
arr[i]=0;
arr[i +1]++;}else{
s +="0";
s +="1";break;}}elseif(arr[i]==2){if(i < arr.length -1){
arr[i]=9;
arr[i +1]++;}else{
s +="9";
s +="1";break;}}
s += arr[i];}
int idx = s.length()-1;int ex =(int) Math.pow(3, idx);
String ans ="";while(idx >=0){char t = s.charAt(idx);if(t !='0'){if(t =='9'){
ans +="-"+ ex +" ";}else{
ans += ex +" ";}}
idx--;
ex /=3;}
import java.util.Scanner;public class A028_天平称重_进制方式 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String s = ""; while (n > 0) ...