时间限制:1秒 空间限制:32768K 热度指数:10503
题目描述
给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数
输入描述:
输入为一行,M(32位整数)、N(2 ≤ N ≤ 16),以空格隔开。
输出描述:
为每个测试实例输出转换后的数,每个输出占一行。如果N大于9,则对应的数字规则参考16进制(比如,10用A表示,等等)
示例1
输入
7 2
输出
111
#include <iostream>
#include <stdio.h>
#include <math.h>
#include <iomanip> //不能写成#include <iomanip.h>
#include <string.h>
using namespace std;
int main()
{
int M=0; //十进制数M
int N=0; //N进制数
int i=0;
int array[100]; //用于存储M除N的余数
int zero=1; //循环标志位,如果是0,就说明已经可以退出循环
string str="0123456789ABCDEF",str1="";
cin>>M>>N; //输入
if(M<0) //判断M是否小于0
{
cout<<"-";
M=-M;
}
if(M==0)//判断M是否等于0
{
cout<<0<<endl;
}
while(zero!=0)//求余数
{
str1=str[array[i]=M%N]+str1;
i++;
zero=(int)M/N;
M/=N;
}
cout<<str1<<endl; //输出
return 0;
}