强解试了很多次都够呛,我们对其进行分析给的是n和m,n给的是位数,n=3,最小=aaa,最大=zzz。m则为倒数的第几位数,倒数太麻烦我们给他转正,就得到的是正数的几位数。
aaa=1,aab=2........zzz=26^3;我们可以把其抽象为26进制,一位和一位相差的最大26,类如1和11十进制相差的10,我们可以先类比10进制求2817398719的最后一位我们应该怎么求,那必然是%10,那么26进制就是%26,同样下一位呢是不是另x/10,然后再%10,类比....
#include<iostream>
#include<cmath>
using namespace std;
int n,m;
string str;
int main()
{
cin>>n>>m;
m=pow(26,n)-m;
for(int i=0;i<n;i++)
{
str+=m%26+'a';
printf("%c\n",m%26+'a');
m/=26; //如果n=3 此循环其实只进行三步 第一步得到的是
}
for(int i=str.size()-1;i>=0;i--)
{
cout<<str[i];
}
return 0;
}