题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述 : 输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述 : 为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
解题思路
首先判断给定整数的正、负;如果是负数,则先转成正数,先把负号输出;
用m%n算出该数的最低位,然后先把这一位存入字符串中;
m=m/n进入循环,依次求出每一位数字,和前面字符串进行拼接。
代码实现
#include<iostream>
using namespace std;
int main()
{
int m,n;
cin>>m>>n;
string s="";
string num="0123456789ABCDEF";
while(m)
{
if(m<0)
{
m=-m;
cout<<"-";
}
s=num[m%n]+s;
m=m/n;
}
cout<<s<<endl;
return 0;
}