Problem p02629 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define sz(s) s.size()
#define ll long long int
#define ull unsigned ll
#define ld long double
#define print(v)                                                               \\
  for (ll i = 0; i < v.size(); i++)                                            \\
  cout << v[i] << " "
#define printpair(v)                                                           \\
  for (ll i = 0; i < v.size(); i++)                                            \\
  cout << v[i].first << " " << v[i].second << "\\n"
#define bmd 1000000007
#define bmd1 998244353
#define umll unordered_map<ll, ll>
#define mll map<ll, ll>
#define mcl map<char, ll>
#define pll pair<ll, ll>
#define F first
#define S second
#define setp(x) setprecision(x)
#define pb push_back
#define all(v) v.begin(), v.end()
#define tr(a) for (auto it = a.begin(); it != a.end(); it++)
#define trr(a) for (auto it1 = a.begin(); it1 != a.end(); it1++)
#define vll vector<long long int>
#define sorty(v) sort(v.begin(), v.end())
#define rsort(v) sort(v.rbegin(), v.rend())
#define unik(v) v.erase(unique(all(v)), v.end())
#define PI 3.1415926535897932384626
#define db()                                                                   \\
  cout << "\\n"                                                                 \\
       << "here"                                                               \\
       << "\\n"
typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;

//---------------------------------------------------------------------------
const int MOD = bmd;
const int N = 2e5 + 100;
inline ll sqr(ll x) { return x * x; }
inline void normal(ll &a) { a = (a + MOD) % MOD; }
inline ll modMul(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a * b) % MOD;
}
inline ll modAdd(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a + b) % MOD;
}
inline ll modSub(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  a -= b;
  normal(a);
  return a;
}
inline ll modPow(ll b, ll p) {
  ll r = 1;
  b = b % MOD;
  while (p) {
    if (p & 1)
      r = modMul(r, b);
    b = modMul(b, b);
    p >>= 1;
  }
  return r;
}
inline ll modInv(ll a) { return modPow(a, MOD - 2); }
inline ll modDiv(ll a, ll b) { return modMul(a, modInv(b)); }
//---------------------------------------------------------------------------

void solve() {
  ll n;
  cin >> n;
  ll a[15];
  ll i = 0;
  while (n) {
    a[i] = n % 26;
    n /= 26;
    i++;
  }
  for (ll j = 0; j < i - 1; j++) {
    if (a[j] <= 0) {
      a[j] += 26;
      a[j + 1]--;
    }
  }
  for (ll j = i - 1; j >= 0; j--) {
    if (a[j] > 0)
      cout << char('a' + a[j] - 1);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0); // first give all input then gives output
  ll t = 1;
  // cin>>t;
  while (t--) {
    solve();
  }

  return 0;
}


Error: WA

Fixed submission:

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define sz(s) s.size()
#define ll long long int
#define ull unsigned ll
#define ld long double
#define print(v)                                                               \\
  for (ll i = 0; i < v.size(); i++)                                            \\
  cout << v[i] << " "
#define printpair(v)                                                           \\
  for (ll i = 0; i < v.size(); i++)                                            \\
  cout << v[i].first << " " << v[i].second << "\\n"
#define bmd 1000000007
#define bmd1 998244353
#define umll unordered_map<ll, ll>
#define mll map<ll, ll>
#define mcl map<char, ll>
#define pll pair<ll, ll>
#define F first
#define S second
#define setp(x) setprecision(x)
#define pb push_back
#define all(v) v.begin(), v.end()
#define tr(a) for (auto it = a.begin(); it != a.end(); it++)
#define trr(a) for (auto it1 = a.begin(); it1 != a.end(); it1++)
#define vll vector<long long int>
#define sorty(v) sort(v.begin(), v.end())
#define rsort(v) sort(v.rbegin(), v.rend())
#define unik(v) v.erase(unique(all(v)), v.end())
#define PI 3.1415926535897932384626
#define db()                                                                   \\
  cout << "\\n"                                                                 \\
       << "here"                                                               \\
       << "\\n"
typedef tree<int, null_type, less<int>, rb_tree_tag,
             tree_order_statistics_node_update>
    ordered_set;

//---------------------------------------------------------------------------
const int MOD = bmd;
const int N = 2e5 + 100;
inline ll sqr(ll x) { return x * x; }
inline void normal(ll &a) { a = (a + MOD) % MOD; }
inline ll modMul(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a * b) % MOD;
}
inline ll modAdd(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  return (a + b) % MOD;
}
inline ll modSub(ll a, ll b) {
  a %= MOD, b %= MOD;
  normal(a), normal(b);
  a -= b;
  normal(a);
  return a;
}
inline ll modPow(ll b, ll p) {
  ll r = 1;
  b = b % MOD;
  while (p) {
    if (p & 1)
      r = modMul(r, b);
    b = modMul(b, b);
    p >>= 1;
  }
  return r;
}
inline ll modInv(ll a) { return modPow(a, MOD - 2); }
inline ll modDiv(ll a, ll b) { return modMul(a, modInv(b)); }
//---------------------------------------------------------------------------
ll po[15];
umll mp;
ll givelen(ll n) {
  ll ret = 0;
  ll s = 0, c = 0;
  while (s < n) {
    ll x = po[c];
    c++;
    s += x;

    if (s <= n)
      ret++;
  }

  return ret;
}
void solve() {
  ll n;
  cin >> n;
  char a[27];

  for (ll i = 1; i <= 26; i++) {
    a[i] = char((i - 1) + 'a');
  }

  ll len = givelen(n);
  vector<char> ans;

  ll c = len - 1;
  while (sz(ans) < len) {
    ll x = po[c];
    c--;
    ll r = n / x;
    if (r > 26 && c >= 0) {
      ll rem = n - (po[c] * 26);
      r = rem / x;
    }
    if (r == 0)
      continue;

    if (r >= 1 && r <= 26)
      ans.pb(a[r]);
    n -= (x * r);
  }

  for (auto x : ans)
    cout << x;
}
int main() {
  // ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);//first give all
  // input then gives output
  ll t = 1;
  po[0] = 1;

  mp[0] = 1;
  for (ll i = 1; i <= 13; i++) {
    po[i] = po[i - 1] * 26;
    mp[po[i]] = 1;
  }
  // cin>>t;
  while (t--) {
    solve();
  }

  return 0;
}