进制转换oj
Posted ohana!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进制转换oj相关的知识,希望对你有一定的参考价值。
目录
一,题目描述
二,解题分析
十进制数的进制转换使用辗转相除法获取每步的余数;这里需要考虑几种情况:
1.十进制数为负数时,这个时候就需要将十进制数转换成一个整数进行转换,只不过在最后输出的时候在结果加上一个负号就好了
2.输出的值不止是阿拉伯数字,还有A-F,可以使用一个数组保存,对余数进行判断就好了;
3.辗转相除得到的结果最后输出需要反序,因为计算的结果是反的;(我是保存在字符串的情况)
三,解题代码
import java.util.*;
public class Main
public static void main(String[] args)
Scanner sc = new Scanner(System.in);
int m = sc.nextInt();
int n = sc.nextInt();
int num1 = m;
int flag = 1;
//记录要被转进制的数是正数还是负数
if(m < 0)
flag = -1;
//为保证准确性,统一将这个数取为正整数
int num = Math.abs(m);
//使用辗转相除法进行运算,判断余数应该是取哪个字符
String str = "0123456789ABCDEF";
//用栈先保存起来,后序需要栈输出
Stack<Character> s = new Stack<>();
while(num != 0)
s.push(str.charAt(num % n));
num = num / n;
StringBuilder sb = new StringBuilder();
if(flag == -1)
sb.append('-');
while(!s.empty())
sb.append(s.pop());
if(num1 == 0)
System.out.println(0);
else
System.out.println(sb.toString());
以上是关于进制转换oj的主要内容,如果未能解决你的问题,请参考以下文章