这原本是Noip2000的一个题目
https://www.luogu.com.cn/problem/P1017
被我们的伟大的唯心主义编程大师拿来当成了作业题,我正好复习一下进制问题
首先十进制转换为任意进制我们需要考虑如下几种情况
1.转换为正数10十进制之内的进制
2.转换为正数10进制之外的进制
3.转换为负数进制
第一步普通的转换进制
通过简单地模拟就可以做到,无非是取余操作,然后把对应原数值除对应的进制
r=n%t;
n/=t;
第二步考虑到负数进制问题
r可能会小于0
所以当r<0的时候让
r-=t;
n++;
第三步输出考虑r大于10的情况
大于10变成字母即可
'A'+r-10;
先上代码
package third;
import java.util.*;
public class first {
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
int n,t;
n=cin.nextInt();
t=cin.nextInt();
Stack<Integer> s=new Stack<Integer>();
while(n!=0)
{
int r=n%t;
n/=t;
if(r<0)
{
r-=t;
n++;
}
s.push(r);
}
System.out.print("=");
while(!s.empty())
{
if(s.peek()<10)
{
System.out.print(s.pop());
}
else
System.out.print((char)('A'+s.pop()-10));
}
System.out.print("(base"+t+")");
cin.close();
}
}