还是想了很久的 太久不做题 脑子生锈了。
十进制0~9 那么转为26进制就是0~25 a就是0 z就是25
之后 得到正着数应该是第几位 然后得到每一位是多少
再输出即可 注意需要操作的位可能不足n位 也就是说不一定进位 前面要补上a
#include<iostream>
#include <cmath>
#include <cstring>
#include <set>
using namespace std;
int n,w,z,cnt;
int main()
{
cin>>n>>w;
z=pow(26,n)-w;//对应正着数的第几位
int t=z;
int b[n];//用于存储每一位是多少
int i=n-1;
while(z){
int g=z%26;
b[i]=g;//得到每一位
cnt++;
z/=26;
i--;
}
int a=n-cnt;//是否需要补零
if(a!=0){
for(int i=0;i<a;i++) cout<<'a';
}
for(int i=n-cnt;i<=n-1;i++) printf("%c",b[i]+97); //输出修改位
return 0;
}