总结:做题之前要想清楚,然后通过举例子来找丢分点。
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n, m;
int num[30], cnt, num1;
signed main(){
cin >> n >> m;
num[0] = 1;
for(int i = 1; i <= 6; i++){
num[i] = num[i - 1] * 26;
}
m = num[n] - m;
num1 = n;
while(m > 0){
for(int i = 25; i >= 0; i --){
int x = i * num[n - 1];
if(x <= m){
cout << char('a' + i);
m -= x;
cnt ++;
break;
}
}
n --;
}
//只写前边会产生一个问题,样例:2 26
//应输出za,但是结果只输出了z
int dis = abs(num1 - cnt);
while(dis > 0) {
cout <<"a";
dis --;
}
return 0;
}