用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。

如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。

本题目要求编程实现:对用户给定的重量,给出砝码组合方案。

例如:

用户输入:

5

程序输出:

9-3-1

用户输入:

19

程序输出:

27-9+1

输入:

41

输出:

81-27-9-3-1

要求程序输出的组合总是大数在前小数在后。

可以假设用户的输入的数字符合范围1~121。

脱去题目的外衣,就是让求:

3^4*x[4] + 3^3*x[3] + 3^2*x[2] + 3^1*x[1] + 3^0*x[0] = const (0 <= const <= 121) 时x 的解.

从上面的式子,很直接的就能想到“三进制”,但和“三进制”不同的是:x [ i ] 只能是(-1, 0, 1) 而不是(0, 1 ,2),所以还要简单的转换一下。

//先将十进制转换成三进制;

class DecimalToTernary {

int[] x = new int[5];

DecimalToTernary(int i) {

if (i >= 0 && i <= 121) {

for (int j = 0; j < 5; j++) {

x[j] = i % 3;

i = i / 3;

}

}

else

System.out.println("The number is wrong!");

}

}

//再将三进制(0,1,2)转换成新的三进制(-1,0,1);

class NewTernary {

int carry = 0; //进位;

NewTernary(DecimalToTernary a) {

for (int i = 0; i < 5; i++) {

a.x[i] = a.x[i] + carry;

if (a.x[i] > 1) {

carry = 1;

a.x[i] = a.x[i] - 3;

}

else

carry = 0;

}

}

}

public class CsdnJava {

public static void main(String[] args) {

int input = 41;

DecimalToTernary a = new DecimalToTernary(input);

System.out.println("input = " + input +" =");

for (int i = 4; i >= 0; i--) {

System.out.print(a.x[i] + "*3^" + i );

if (i != 0)

System.out.print(" + ");

}

System.out.println();

new NewTernary(a);

System.out.println("input = " + input +" =");

for (int i = 4; i >= 0; i--) {

System.out.print(a.x[i] + "*3^" + i );

if (i != 0)

System.out.print(" + ");

}

System.out.println();

}

}

//output:

input = 41 =

0*3^4 + 1*3^3 + 1*3^2 + 1*3^1 + 2*3^0

input = 41 =

1*3^4 + -1*3^3 + -1*3^2 + -1*3^1 + -1*3^0

输出的形式还不是很好。。。

看了那道题后面大家的回复,办法真是多啊!!!

“三进制”这种做法,就仅仅是 就题论题 而已。。。

java十进制_JAVA 十进制 转换成 三进制相关推荐

  1. java非负整数怎么设_使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法...

    使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 一.题目要求 将非负十进制整数n转换成b进制.(其中b=2~16) ...

  2. 将十进制正整数m转换成k进制(2≤k≤9)数的数字输出

    //给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出. //例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000).请填空. #include <s ...

  3. 通过十进制转换成高进制来缩短数据长度

    因项目需求,需要把一串数字压缩长度传给服务器,然后再从服务器获取出来压缩后的数据,转成正常的数据. 想到往高进制转换,从而达到压缩的目的,项目中也实现了需求,但后来整理压缩代码时发现,一个很大的数转换 ...

  4. java中带符号十六进制转换成十进制详解

    java中带符号十六进制转换成十进制详解 代码如下 代码如下 必须拿ffff进行测试,否则测不出异同 public void test1(){String strHex="ffff" ...

  5. 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制

    题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...

  6. 十进制整数,转换成八进制和十六进制数并输出。

    输入一个十进制整数,转换成对应的八进制数和十六进制数并输出. #include<stdio.h> #pragma warning(disable:4996)void decShow(int ...

  7. 十进制数任意转换2-9进制数--栈的应用

    十进制数任意转换2-9进制数--栈的应用 最近看了看数据结构,用栈的基本原理写了一个进制转换程序,在此分享一下,以便于后续查阅! 头文件nb.h如下 #include <stdio.h> ...

  8. java浮点数化为整数_[Java教程]javascript浮点数转换成整数三种方法

    [Java教程]javascript浮点数转换成整数三种方法 0 2014-06-24 04:00:27 将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如 ...

  9. java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法

    学习Java的小伙伴们有时候可能会碰到这么一些烦恼,写日期的时候代码一直报错,原因就是日期一直写的是字符串,在项目里就不能写成字符串了,必须把字符串类型转成日期类型,那Java中如何将字符串Strin ...

  10. java中把map转换成list

    private String key;     private String value;          //把map转换成list的公共方法     public static List map ...

最新文章

  1. cpa机考可以用计算机吗,cpa机考计算器使用方法
  2. 6.1 Tensorflow笔记(基础篇):队列与线程
  3. c++17(33)-数值上下限、无穷、非数、中文字符串
  4. 重庆大学光电工程学院 贾旭滨 对 “句柄” “指针” 有下面的描述(AfxGetMainWnd GetSafeHwnd() AfxGetAppName() AfxGetThread)...
  5. mysql 范围优化_如何优化mysql的范围查询
  6. 形容人的内核是什么意思_成语雪泥鸿爪是形容什么的?雪泥鸿爪什么意思?蚂蚁庄园2020年12月10日答案...
  7. 三次给你讲清楚Redis之Redis是个啥
  8. 创建struct fib_info函数分析
  9. Qt 程序打包发布总结 转
  10. HDU 6127 Hard challenge (极角排序)
  11. 计算机硬件参数及性能判断,小菜硬件杂谈 如何从显卡型号判断性能
  12. oracle 王景田_清华大学经济管理学院电子简讯
  13. android落花效果 字体渐变,落花有情 亲花有趣
  14. 手撕coreML之yolov2 object detection物体检测(含源代码)
  15. 华为路由器:GRE技术
  16. idea前进和撤销快捷键
  17. 基于混沌透镜成像学习的哈里斯鹰优化算法
  18. 英菲尼迪tlme是什么意思_英菲尼迪车标含义是什么
  19. Arya and Bran Game of the Rows Multiple Clocks
  20. Java图形化界面编程超详细知识点(7)——进度条

热门文章

  1. 流批OLAP一体的flink引擎
  2. 南京财经的计算机科学与技术,2021年南京财经大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
  3. linux将两个目录做软连接,centos软连接创建
  4. Android相机拍照后,对照片模糊的处理;对照片旋转90度的处理
  5. 【计几】二维计算几何基础
  6. read函数和write函数
  7. Window10 WSL2 Linux子系统文件目录路径
  8. python魂斗罗源码_经典儿时游戏魂斗罗源代码
  9. block locality
  10. android农历计算器,农历生日计算器,虚岁计算器