题目描述
小美刚刚学习了十六进制,她觉得很有趣,想到是不是还有更大的进制呢?在十六进制中,用 A
表示 10、F
表示 15。如果扩展到用 Z
表示 35,岂不是可以表示 36 进制数了嘛!
所以,你需要帮助她写一个程序,完成十进制转 R 进制(2≤R≤36)的工作。
输入格式
输入两行,第一行包含一个正整数 N,第二行包含一个正整数 R,保证 1≤N≤106。
输出格式
输出一行,为 N 的 R 进制表示。
输入输出样例
输入 #1
123 25
输出 #1
4N
AC代码
#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;
}
测试点信息
本 题 与 [B2143 进制转换] 题 目 相 似 , 方 法 基 本 相 同 , 详 见 [B2143 进制转换] .