P1143 进制转换 链接:link
如何将一个数转成其他进制,主要思路转成10进制后再进行短除法倒取余数最后输出
直接贴代码
#include <bits/stdc++.h>
using namespace std;
string a;
int m,n;
char oti(int a)
{
if(a>=10&&a<=15) return a+'A'-10;
else if(a>=0&&a<=9) return a+'0';
return ' ';
}
int ito(char c)
{
if (c >= '0' && c <= '9')
return c - '0';
else if (c >= 'A' && c <= 'F')
return c - 'A' + 10;
return -1;
}
void to()
{
long long sum = 0, pow = 1,t,cnt=0;
string ans;
int temp[1050],result[1050];
for (int i = 0; i < a.size();i++) //先得到这个十六进制数的数字
{
temp[i] = ito(a[i]);
}
for (int i = a.size()-1; i >= 0; i--)
//得到这个数转成十进制数后
{
sum += temp[i] * pow;
pow *= n;
}
while(sum!=0)
{
ans=oti(sum%m)+ans;
sum/=m;
}
cout<<ans<<endl;
}
int main()
{
cin >> n>>a>>m;
to();
return 0;
}