zoukankan      html  css  js  c++  java
  • 给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题

    题目:给定一个十进制数M,将其转化为N进制数,其中2<=N<=16,其中N为32为整型数;

    输入:M N,如7 2

    输出转化结果:111

    注意点:考虑负数的情况,记得添加负号(其实直接添加负号这个办法,我觉得有点不靠谱,但是系统竟然A了,有知道这个怎么处理的,可以评论下,这样处理为什么能过,还有还可以怎么处理,谢谢大家!!);

    思路:1. 使用一个辅助栈来存放M对N取余的结果(M%N);

         2. 处理余数<=9和>9两种情况,因为按照16进制,>9的数用ABCDEF取代

         3. 再更新取余后M的取值:M=M/N;

         4. 循环处理2,3两个步骤,直到M=0;

       5. 处理最终结果,出栈,直到栈为空;

    代码如下:

    package com.didi;
    
    import java.util.Scanner;
    import java.util.Stack;
    
    public class Main {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
            Scanner scanner = new Scanner(System.in);
            while(scanner.hasNext()){
                int M = scanner.nextInt();
                int N = scanner.nextInt();
                if(M>=0){
                    convert(M, N);
                }
            }
        }
        
        public static void convert(int m, int n){
            if(n==10){
                System.out.println(m);
                return;
            }
            boolean flag = true;
            Stack<Integer> stack = new Stack<Integer>();
            StringBuilder str = new StringBuilder();
            char[] ch = {'A','B','C','D','E','F'};
            while(m!=0){
                if(m%n<10){
                    stack.push(m%n+'0');
                }else{
                    stack.push(m%n-10+'A');
                }
                m = m/n;
            }
            while(!stack.isEmpty()){
                if(m<0&&flag){
                    str.append("-");
                    flag = false;
                }
                if(stack.peek()-'0'<10){
                    str.append(stack.pop()-'0');
                }else{
                    str.append(ch[stack.pop()-'A']);
                }
            }
            System.out.println(str.toString());
        }
    }
  • 相关阅读:
    【转】Senior Data Structure · 浅谈线段树(Segment Tree)
    1260:【例9.4】拦截导弹(Noip1999)
    1255:迷宫问题
    1253:抓住那头牛
    1254:走出迷宫
    POJ 3692 幼儿园做游戏 最大团 模板题
    POJ 1466 大学谈恋爱 二分匹配变形 最大独立集
    POJ 3422 矩阵取数 最小费用流拆点+负边
    POJ 2195 一人一房 最小费用流 建图 水题
    POJ 3068 运送危险化学品 最小费用流 模板题
  • 原文地址:https://www.cnblogs.com/coffy/p/5902524.html
Copyright © 2011-2022 走看看