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

#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
  // Your code here!
  vector<char> a{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
                 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
  long N;
  cin >> N;
  if (N <= 26) { // 1
    cout << a.at(N - 1) << endl;
  } else if (N <= ((pow(26, 3) - 26) / 25)) { // 2
    cout << a.at(int((N - 26 - 1) / 26));
    cout << a.at((N - 26 - 1) % 26) << endl;
  } else if (N <= ((pow(26, 4) - 26) / 25)) { // 3
    long cal = N - ((pow(26, 3) - 26) / 25) - 1;
    for (int i = 0; i < 2; i++) {
      cout << a.at(int(cal / pow(26, 2 - i)));
      cal = cal % long(pow(26, 2 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 5) - 26) / 25)) { // 4
    long cal = N - ((pow(26, 4) - 26) / 25) - 1;
    for (int i = 0; i < 3; i++) {
      cout << a.at(int(cal / pow(26, 3 - i)));
      cal = cal % long(pow(26, 3 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 6) - 26) / 25)) { // 5
    long cal = N - ((pow(26, 5) - 26) / 25) - 1;
    for (int i = 0; i < 4; i++) {
      cout << a.at(int(cal / pow(26, 4 - i)));
      cal = cal % long(pow(26, 4 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 7) - 26) / 25)) { // 6
    long cal = N - ((pow(26, 6) - 26) / 25) - 1;
    for (int i = 0; i < 5; i++) {
      cout << a.at(int(cal / pow(26, 5 - i)));
      cal = cal % long(pow(26, 5 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 8) - 26) / 25)) { // 7
    long cal = N - ((pow(26, 7) - 26) / 25) - 1;
    for (int i = 0; i < 6; i++) {
      cout << a.at(int(cal / pow(26, 6 - i)));
      cal = cal % long(pow(26, 6 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 9) - 26) / 25)) { // 8
    long cal = N - ((pow(26, 8) - 26) / 25) - 1;
    for (int i = 0; i < 7; i++) {
      cout << a.at(int(cal / pow(26, 7 - i)));
      cal = cal % long(pow(26, 7 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 10) - 26) / 25)) { // 9
    long cal = N - ((pow(26, 9) - 26) / 25) - 1;
    for (int i = 0; i < 8; i++) {
      cout << a.at(int(cal / pow(26, 8 - i)));
      cal = cal % long(pow(26, 8 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else if (N <= ((pow(26, 11) - 26) / 25)) { // 10
    long cal = N - ((pow(26, 10) - 26) / 25) - 1;
    for (int i = 0; i < 9; i++) {
      cout << a.at(int(cal / pow(26, 9 - i)));
      cal = cal % long(pow(26, 9 - i));
    }
    cout << a.at(cal % 26) << endl;
  } else { // 11
    long cal = N - ((pow(26, 11) - 26) / 25) - 1;
    for (int i = 0; i < 10; i++) {
      cout << a.at(int(cal / pow(26, 10 - i)));
      cal = cal % long(pow(26, 10 - i));
    }
    cout << a.at(cal % 26) << endl;
  }

  return 0;
}

Error: 0

Fixed submission:

#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
  // Your code here!
  vector<char> a{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
                 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r',
                 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
  long N;
  cin >> N;
  if (N <= 26) { // 1
    cout << a.at(N - 1) << endl;
  } else if (N <= ((pow(26, 3) - 26) / 25)) { // 2
    cout << a.at(int((N - 26) / 26));
    cout << a.at((N - 26) % 26 - 1) << endl;
  } else if (N <= ((pow(26, 4) - 26) / 25)) { // 3
    long cal = N - ((pow(26, 3) - 26) / 25);
    for (int i = 0; i < 2; i++) {
      cout << a.at(int(cal / pow(26, 2 - i)));
      cal = cal % long(pow(26, 2 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 5) - 26) / 25)) { // 4
    long cal = N - ((pow(26, 4) - 26) / 25);
    for (int i = 0; i < 3; i++) {
      cout << a.at(int(cal / pow(26, 3 - i)));
      cal = cal % long(pow(26, 3 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 6) - 26) / 25)) { // 5
    long cal = N - ((pow(26, 5) - 26) / 25);
    for (int i = 0; i < 4; i++) {
      cout << a.at(int(cal / pow(26, 4 - i)));
      cal = cal % long(pow(26, 4 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 7) - 26) / 25)) { // 6
    long cal = N - ((pow(26, 6) - 26) / 25);
    for (int i = 0; i < 5; i++) {
      cout << a.at(int(cal / pow(26, 5 - i)));
      cal = cal % long(pow(26, 5 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 8) - 26) / 25)) { // 7
    long cal = N - ((pow(26, 7) - 26) / 25);
    for (int i = 0; i < 6; i++) {
      cout << a.at(int(cal / pow(26, 6 - i)));
      cal = cal % long(pow(26, 6 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 9) - 26) / 25)) { // 8
    long cal = N - ((pow(26, 8) - 26) / 25);
    for (int i = 0; i < 7; i++) {
      cout << a.at(int(cal / pow(26, 7 - i)));
      cal = cal % long(pow(26, 7 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 10) - 26) / 25)) { // 9
    long cal = N - ((pow(26, 9) - 26) / 25);
    for (int i = 0; i < 8; i++) {
      cout << a.at(int(cal / pow(26, 8 - i)));
      cal = cal % long(pow(26, 8 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else if (N <= ((pow(26, 11) - 26) / 25)) { // 10
    long cal = N - ((pow(26, 10) - 26) / 25);
    for (int i = 0; i < 9; i++) {
      cout << a.at(int(cal / pow(26, 9 - i)));
      cal = cal % long(pow(26, 9 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  } else { // 11
    long cal = N - ((pow(26, 11) - 26) / 25);
    for (int i = 0; i < 10; i++) {
      cout << a.at(int(cal / pow(26, 10 - i)));
      cal = cal % long(pow(26, 10 - i));
    }
    cout << a.at(cal % 26 - 1) << endl;
  }

  return 0;
}