题意: 给定一个十进制数
,输出它的
进制数,用
个小写字母表示
题解: 本来以为直接除即可,但是写几个例子发现由于是取模,所以
对应
,
对应
所以每次取模前都要减去1保证其合法。
如
转换成
,那么我们取模的时候最大得到的是
,所以
要事先减去
如
转换成
,第一次得到
是
,然后
,
所以得到了
。
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N = 110;
char res[N];
int g;
int main()
{
ll n;
scanf("%lld", &n);
while(n) {
n--;
res[g++] = n % 26 + 'a';
n /= 26;
}
for(int i = g - 1; i >= 0; i--) printf("%c", res[i]);
puts("");
return 0;
}