【题目地址】
信息学奥赛一本通(C++版)在线评测系统 (ssoier.cn)http://ybt.ssoier.cn:8088/problem_show.php?pid=1161
【题目】
用递归算法将一个十进制数X转换成任意进制数M(M≤16)。
【输入】
一行两个数,第一个十进制数X,第二个为进制M。
【输出】
输出结果。
【输入样例】
31 16 {将十进制31转化为十六进制数}
【输出样例】
1F
【思路】
它题上既然说了m<=16 那么就是:0123456789ABCDEF
样例中的1F就代表31
(31-16=15 16进制中的15=F 所以31=1F(16)
【代码】
#include <bits/stdc++.h>
using namespace std;
char a[17]="0123456789ABCDEF";
int n,m;
void f(int n,int m)
{
if(n/m!=0) //当不为0时
f(n/m,m); //递归调用
cout<<a[n%m];//输出最底层的余数 反向输出
}
int main(){
cin>>n>>m;//输入十进制数 与 转换的进制
f(n,m);//调用函数
}
时间长不更新,浅浅更