蓝桥杯:天平称重解法补充——进制

xiaoxiao2021-02-28  65

package four; public class tianping_jinzhi { /* * 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81 则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。 本题目要求编程实现:对用户给定的重量,给出砝码组合方案。 例如: 用户输入: 5 程序输出: 9-3-1 用户输入: 19 程序输出: 27-9+1 要求程序输出的组合总是大数在前小数在后。 可以假设用户的输入的数字符合范围1~121。 */ /* * 思路:此次采用进制算法,根据题目中的砝码重量可以联想到将待称重的数字转化为三进制数。 */ static String fun(int n){ String s=""; int q=1;//权重 while(n>0){ int shang=n/3;//商 if(n%3==1){ //如果余数为1 做加法 s="+"+q+s; } if(n%3==2){ //如果余数为2 做减法 商+1 s= "-"+q+s; shang++; } //辗转相除,把商的值付给n,权重增加 n=shang; q*=3; } //因为第一位之前总是有+ 所以截取掉 return s.substring(1); } public static void main(String[] args) { System.out.println(fun(19)); } }
转载请注明原文地址: https://www.6miu.com/read-2619112.html

最新回复(0)