java十进制_JAVA 十进制 转换成 三进制
用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。
如果只有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 十进制 转换成 三进制相关推荐
- java非负整数怎么设_使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法...
使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法 一.题目要求 将非负十进制整数n转换成b进制.(其中b=2~16) ...
- 将十进制正整数m转换成k进制(2≤k≤9)数的数字输出
//给定程序的功能是将十进制正整数m转换成k进制(2≤k≤9)数的数字输出. //例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000).请填空. #include <s ...
- 通过十进制转换成高进制来缩短数据长度
因项目需求,需要把一串数字压缩长度传给服务器,然后再从服务器获取出来压缩后的数据,转成正常的数据. 想到往高进制转换,从而达到压缩的目的,项目中也实现了需求,但后来整理压缩代码时发现,一个很大的数转换 ...
- java中带符号十六进制转换成十进制详解
java中带符号十六进制转换成十进制详解 代码如下 代码如下 必须拿ffff进行测试,否则测不出异同 public void test1(){String strHex="ffff" ...
- 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制
题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...
- 十进制整数,转换成八进制和十六进制数并输出。
输入一个十进制整数,转换成对应的八进制数和十六进制数并输出. #include<stdio.h> #pragma warning(disable:4996)void decShow(int ...
- 十进制数任意转换2-9进制数--栈的应用
十进制数任意转换2-9进制数--栈的应用 最近看了看数据结构,用栈的基本原理写了一个进制转换程序,在此分享一下,以便于后续查阅! 头文件nb.h如下 #include <stdio.h> ...
- java浮点数化为整数_[Java教程]javascript浮点数转换成整数三种方法
[Java教程]javascript浮点数转换成整数三种方法 0 2014-06-24 04:00:27 将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如 ...
- java如何将string转换成date_java如何将string类型转为date类型?Java的转型方法
学习Java的小伙伴们有时候可能会碰到这么一些烦恼,写日期的时候代码一直报错,原因就是日期一直写的是字符串,在项目里就不能写成字符串了,必须把字符串类型转成日期类型,那Java中如何将字符串Strin ...
- java中把map转换成list
private String key; private String value; //把map转换成list的公共方法 public static List map ...
最新文章
- cpa机考可以用计算机吗,cpa机考计算器使用方法
- 6.1 Tensorflow笔记(基础篇):队列与线程
- c++17(33)-数值上下限、无穷、非数、中文字符串
- 重庆大学光电工程学院 贾旭滨 对 “句柄” “指针” 有下面的描述(AfxGetMainWnd GetSafeHwnd() AfxGetAppName() AfxGetThread)...
- mysql 范围优化_如何优化mysql的范围查询
- 形容人的内核是什么意思_成语雪泥鸿爪是形容什么的?雪泥鸿爪什么意思?蚂蚁庄园2020年12月10日答案...
- 三次给你讲清楚Redis之Redis是个啥
- 创建struct fib_info函数分析
- Qt 程序打包发布总结 转
- HDU 6127 Hard challenge (极角排序)
- 计算机硬件参数及性能判断,小菜硬件杂谈 如何从显卡型号判断性能
- oracle 王景田_清华大学经济管理学院电子简讯
- android落花效果 字体渐变,落花有情 亲花有趣
- 手撕coreML之yolov2 object detection物体检测(含源代码)
- 华为路由器:GRE技术
- idea前进和撤销快捷键
- 基于混沌透镜成像学习的哈里斯鹰优化算法
- 英菲尼迪tlme是什么意思_英菲尼迪车标含义是什么
- Arya and Bran Game of the Rows Multiple Clocks
- Java图形化界面编程超详细知识点(7)——进度条
热门文章
- 流批OLAP一体的flink引擎
- 南京财经的计算机科学与技术,2021年南京财经大学计算机科学与技术(081200)考研专业目录_硕士研究生考试范围 - 学途吧...
- linux将两个目录做软连接,centos软连接创建
- Android相机拍照后,对照片模糊的处理;对照片旋转90度的处理
- 【计几】二维计算几何基础
- read函数和write函数
- Window10 WSL2 Linux子系统文件目录路径
- python魂斗罗源码_经典儿时游戏魂斗罗源代码
- block locality
- android农历计算器,农历生日计算器,虚岁计算器