题目描述
将M进制的数X转换为N进制的数输出。
输入描述
输入的第一行包括两个整数:M和N(2<=M,N<=36)。
下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。
输出描述
输出X的N进制表示的数。
示例:
输入
10 2
11
输出
1011
注意
输入时如有字母,则字母为大写,输出时如有字母,则字母为小写。
分析
这道题其实和10进制与2进制的转换是一样的,算法是相同的,只不过是换成了M和N而已,具体算法可以参考博主之前的博客进制转换。不过这道题需要注意输入和输出的大小写字母,所以需要单独写两个转化函数,这里使用了c库的判断类型的函数。另外这道题使用数组来存储输入和中间结果,并在计算过程中判断输入是否变为0,输入变为0就表示已经计算出结果,不再像之前一样单独写一个判断函数,这样提高了效率。还要注意结果的存储,如果将每一步的结果直接插入字符串的结尾,则在输出时需要逆序输出;如果插入到字符串的最前端,那么最后可以直接输出。
AC代码如下:
#include<iostream>
#include<string>
#include<cctype>//c库类型函数
using namespace std;
int m, n;//输入
int ctoi(char c)//char to int
{
if(isalpha(c)