题目描述
用递归算法将一个十进制数X转换成任意进制数M(M<=16)。
输入格式
十进制数。
输出格式
转换后的数。
输入样例 复制
10 2
输出样例 复制
1010
完整代码
#include<bits/stdc++.h>
using namespace std;
//非递归的方法
string trans(int n,int x){
if(n==0) return "0";
int flag=0;
if(n<0){
n=-n;
flag=1;
}
string res;
while(n){
int m=n%x;
string s;
if(m>9){
s='a'+(m-10);
}else{
s=to_string(m);
}
res=""+s+res;
n/=x;
}
if(flag) res="-"+res;
return res;
}
//递归的方法
string jinzhi(int n,int x,string res){
if(n==0) return res;
else{
int m=n%x;
string s;
if(m>9){
s='A'+(m-10);
}else{
s=to_string(m);
}
res=s+res;
n/=x;
return jinzhi(n,x,res);
}
}
int main(){
//freopen("/config/workspace/test/test","r",stdin);
int n,x;
cin>>n>>x;
string ans;
ans=jinzhi(abs(n),x,ans);
if(n==0){
ans="0";
}else if(n<0){
ans="-"+ans;
}
cout<<ans<<endl;
return 0;
}