//将字母先转为十进制数字,将倒数第n个字符转换为 整数第x个字符
#include<iostream>
#include<cstring>
using namespace std;
typedef long long LL;
char a[8];
LL f(int l) { //求26的每个次方
LL s = 1;
for(int i = 0;i < l;i ++)
{
s *= 26;
}
return s;
}
void zhuan(LL x, int l) { //转换为26进制
int j = 0;
for(int i = l - 1;i >= 0;i --)
{
a[j] = x /(f(i)) + 'a'; //从最高位开始
x %= f(i);
j ++;
}
a[l]='\0';
}
int main() {
int l, n;
cin >>l >> n;
LL x = f(l) - (long)n;
zhuan(x, l);
puts(a);
return 0;
}
核心:将字母先转为十进制数字,减去所给数字n,将题目目标化为求正数的第x位数,再将十进制的数字转换为26进制即可