题目思路
就是进制转换啦。
进制转换,肯定要讲一下短除法。就是每次看余数并做除法。
比如 $10$ 转换 $2$ 进制。
$13\bmod2=1$。
$6 \bmod 2=0$。
$3 \bmod2=1$。
$1\bmod2=1$。
最后倒序枚举余数即可。
那么,我们可以有两种方案,递归和存数组。
存数组,字面意思,把余数存下来,最后翻转,输出。
递归,每次准备着输出数,但先递归后面的余数,最后返回来输出。
题目代码
我用的是递归。
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
string c="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//存数
void f(ll x,ll m){if(x/m)f(x/m,m);cout<<c[x%m];}//递归
int main()
{
ll n,x;
cin>>n>>x;
if(x==0){puts("0");return;}
f(n,x);
return 0;
}