进制转换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的主要内容,如果未能解决你的问题,请参考以下文章

进制转换————杭电oj 2031题(c语言解决)

每日一练----1.20 oj总结

oj---九度oj----大数---进制转换

9月28日--进制转换

58进制转换工具

怎么把六十四进制转换为二进制