벡터에 'A'로 n개 만큼 할당을 하고 맨 뒤에서부터 Z로 교체할 수 있으면 교체하고 교체하지 못한다면 현재 위치보다 앞에 있는 A의 개수들과 현재까지의 채운 가중치를 통해 현재에 어떤 알파벳이 들어가야할지 알 수 있다.
#include <string>
#include <vector>
#include<iostream>
#include<memory.h>
#include<map>
#include<float.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
vector<char> v;
int n, x, cur;
cin >> n >> x;
for (int i = 0; i < n; i++)
v.push_back('A');
cur = n;
int idx = n - 1;
if (n * 26 < x || n > x)
{
cout << "!";
return (0);
}
while (idx >= 0)
{
if (x - (idx + 1) - 26 >= 0)
{
v[idx] = 'Z';
idx--;
x -= 26;
}
else
{
v[idx] = 'A' + x - (idx + 1);
cur += x - (idx + 1);
break;
}
}
for (int i = 0; i < v.size(); i++)
cout << v[i];
}