思路:首先是可以想到要用到进制转换显然这里给的是26进制,但是问题的关键是在于怎么把字母和数字进行转换。
#include<iostream>
#include<cmath>
using namespace std;
int n,m;
string ans;
int main(){
scanf("%d%d",&n,&m);
//这里我偷懒重复用了m变量
m = pow(26,n) - m;//计算出26的n次幂,减去倒数的第m个
//得到顺数的一个26进制数
for(int i = 0;i < n;i++)//从后向前一个个提取数位上的值,并转换为字母
{
ans += m % 26 + 'a';
m /= 26;
}
//从后向前输出
for(int i = ans.size() - 1;i >= 0;i--)
cout << ans[i];
cout << endl;
return 0;
}