目录
一、题目
二、分析
三、代码
一、题目
进制转换_牛客题霸_牛客网
二、分析
三、代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
string Greater_than_Ten(int digit)//余数大于等于10的时候转换成对应的字母
{
switch (digit)
{
case 10:
return "A";
case 11:
return "B";
case 12:
return "C";
case 13:
return "D";
case 14:
return "E";
case 15:
return "F";
default:
return to_string(digit);
}
}
string Ten_to_N(int M,int N,int symbol)
//M表示取绝对值后的十进制数,N表示要转换成的进制,symbol表示正负
{
vector<int>data;
int remainder;//余数
while(M!=0)
{
remainder = M%N;
data.push_back(remainder);
M = M/N;
}
string Str;
if(symbol == -1)
{
Str+='-';
}
for(int i=data.size()-1;i>=0;i--)
{
if(data[i]>=10)
{
Str+=Greater_than_Ten(data[i]);
}
else
{
Str+=to_string(data[i]);
}
}
return Str;
}
int main() {
int M,N;
cin>>M>>N;
if(M==0)//易出错
{
cout<<M;
return 0;
}
int symbol = 1;//标识正负
if( M < 0)
{
symbol = -1;
M = abs(M);
}
cout<<Ten_to_N(M, N, symbol);
return 0;
}