进制转换
洛谷P1143
思路
我们就用着最简单粗暴的方式 先由n进制转到十进制 然后再转m进制
任何进制转十进制都是一样的
就拿二进制转十进制举例:10101转十进制
而任何进制转十进制都是用短除法 取余 最后倒过来就好啦
上代码
//
// main.cpp
// 进制转换
//
// Created by Helen on 2020/7/23.
// Copyright © 2020 Helen. All rights reserved.
//
#include <iostream>
#include <cstring>
using namespace std;
int OtT (char c)//简单粗暴🙃
{
if (c=='A')
return 10;
if (c=='B')
return 11;
if (c=='C')
return 12;
if (c=='D')
return 13;
if (c=='E')
return 14;
if (c=='F')
return 15;
return int(c-'0');
}
int TtN (int c)//简单粗暴🙃
{
if (c==10)
return 'A';
if (c==11)
return 'B';
if (c==12)
return 'C';
if (c==13)
return 'D';
if (c==14)
return 'E';
if (c==15)
return 'F';
return int(c+'0');
}
int n,m;
string s;
int ten;
int num;
string ans="";
int main()
{
cin >> n >> s >> m;
for (int i=s.size()-1,now=1;i>=0;i--,now*=n)
num+=OtT(s[i])*now;
while (num!=0)
{
ans+=TtN(num%m);
num/=m;
}
for (int i=ans.size()-1;i>=0;i--)
cout << ans[i];
cout << endl;
return 0;
}
Bonnuit~
----------------------------------------✂︎---------------------------------------------
此题解已经AC 欢迎指出更多优化方法~