本题唯一的关键点,到当前点是不减的
什么意思?
l = 3,n = 1
也就是倒数第一个,这个时候是不用减的,注意这一点就行
#include<bits/stdc++.h>
#define endl '\n'
#define int int64_t
#define ld long double
using namespace std;
int dx[] = { -1,0,1,0 };
int dy[] = { 0,1,0,-1 };
const int NC = 2e3 + 10;
char ches[NC][NC];
const int mod = 1e9 + 7;
const int N = 2e5 + 10;
int a[N], b[N], n, m,l;
void cal(string& s) {
s[l]--;
for (int i = l; i >= 1; --i) {
if (s[i] + 1 == 'a') {
s[i - 1]--;
s[i] = 'z';
}
}
}
void solve() {
cin >> l >> n;
string s = "";
for (int i = 1; i <= l; ++i)
s += 'z';
s = '!' + s;
n--;
for (int i = 1; i <= n; ++i)
cal(s);
for (int i = 1; i <= l; ++i)
cout << s[i];
cout << endl;
}
signed main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t = 1;
//cin >> t;
while (t--) {
solve();
}
return 0;
}