题目描述
小美刚刚学习了十六进制,她觉得很有趣,想到是不是还有更大的进制呢?在十六进制中,用 A
表示 1010、F
表示 1515。如果扩展到用 Z
表示 3535,岂不是可以表示 3636 进制数了嘛!
所以,你需要帮助她写一个程序,完成十进制转 R 进制(2≤R≤36)的工作。
输入格式
输入两行,第一行包含一个正整数 N,第二行包含一个正整数 R,保证 1≤N≤106。
输出格式
输出一行,为 N 的 R 进制表示。
输入输出样例
输入
123
25
输出
4N
代码:
#include <bits/stdc++.h>
using namespace std;
int x,r,s;
int a[1005];
void dfs(int num,int step)
{
if(num<r)
{
a[step]=num;
s=step;
return;
}
int i=num%r;
a[step]=i;
int j=num/r;
dfs(j,step+1);
}
int main()
{
cin>>x>>r;
dfs(x,1);
for(int i=s;i>=1;i--)
{
if(a[i]<=9)
{
cout<<char(a[i]+48);
}
else
{
cout<<char(a[i]+55);
}
}
return 0;
}