给定一个十进制数,将其转化为N进制数-----17年滴滴笔试题
2016-09-24 09:51
465 查看
题目:给定一个十进制数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. 处理最终结果,出栈,直到栈为空;
代码如下:
输入: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()); } }
相关文章推荐
- 给定一个十进制数M,以及需要转换的进制数N。 将十进制数M转化为N进制数
- 将一个十进制数转化为16进制数
- 递归 将一个十进制数转化为任意进制字符串
- 一个利用堆栈实现的正整数10进制向16进制的转化程序
- 给定一个存放整数的数组,重新排列数组使得数组左边为奇数,右边为偶数---百度笔试题
- 给定一个十进制数,转换为对应的二进制数
- USACO Section 2.3 Cow Pedigrees - 又是一个转化进制的枚举
- 进制转化算法(C++实现)——创新工场笔试归来
- 字符串处理算法(四)现在一个给定字符串中寻找子串的功能(不能使用库函数)[2014百度笔试题]
- 给定一个数组a[N],我们希望构造数组b[N]。。(2013腾讯实习生笔试题)
- 用C语言编写一个程序将输入的十进制数转化成16进制?
- C++趣味编程算法//求一个十进制数转换为任意进制数
- 十进制数与d进制数之间的转化,并用栈存储结果并打印
- c#如实现将一个数字转化为其他进制字符串输出
- 面试题:编写一个将十进制数转换为任意进制的算法或函数
- 金山笔试题 "写一个函数,对给定整数的二进制表示进行描述"
- 一个n(n<16)进制串转换化为十进制数的c程序
- 求一个数中任意的某一段,(可以转化为其他进制)
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
- 一道笔试题,求给定一个整数是否存在一个给定的矩阵中