题目描述
用递归算法将一个十进制数X(1<=X<=10^9)转换成任意进制数M(2<=M<=16)。
输入
一行两个正整数X和M。
输出
输出X的M进制的表示。
样例输入
31 16
样例输出
1F
思路:本题若直接应用字符串,则十分简洁。
代码一(递归算法):
#include <bits/stdc++.h>
using namespace std;
void convert(int n, int base)
{
char digit;
if(n) {
convert(n / base, base);
digit = n % base;
if(digit >= 10)
digit = 'A' + digit - 10;
else
digit += '0';
printf("%c", digit);
}
}
int main()
{
int x, m;
scanf("%d%d", &x, &m);
convert(x, m);
printf("\n");
return 0;
}
代码二(应用string):
#include<iostream>
#include<string>
using namespace std;
int main() {
long x, m;
string s="0123456789ABCDEF";
string t="";
cin >> x >> m;
while(x>0){
t=s[x%m]+t;
x/=m;
}
cout << t;
}