Problem:
Score : 300 points

Problem Statement

1000000000000001 dogs suddenly appeared under the roof of Roger's house, all of which he decided to keep. The dogs had been numbered 1 through 1000000000000001, but he gave them new names, as follows:

the dogs numbered 1,2,\cdots,26 were respectively given the names a, b, ..., z;

the dogs numbered 27,28,29,\cdots,701,702 were respectively given the names aa, ab, ac, ..., zy, zz;

the dogs numbered 703,704,705,\cdots,18277,18278 were respectively given the names aaa, aab, aac, ..., zzy, zzz;

the dogs numbered 18279,18280,18281,\cdots,475253,475254 were respectively given the names aaaa, aaab, aaac, ..., zzzy, zzzz;

the dogs numbered 475255,475256,\cdots were respectively given the names aaaaa, aaaab, ...;

and so on.

To sum it up, the dogs numbered 1, 2, \cdots were respectively given the following names:

a, b, ..., z, aa, ab, ..., az, ba, bb, ..., bz, ..., za, zb, ..., zz, aaa, aab, ..., aaz, aba, abb, ..., abz, ..., zzz, aaaa, ...

Now, Roger asks you:

"What is the name for the dog numbered N?"

Constraints

N is an integer.

1 \leq N \leq 1000000000000001

Input

Input is given from Standard Input in the following format:

N

Output

Print the answer to Roger's question as a string consisting of lowercase English letters.

Sample Input 1

2

Sample Output 1

b

Sample Input 2

27

Sample Output 2

aa

Sample Input 3

123456789

Sample Output 3

jjddja

Solution in C++ (GCC 9.2.1) (judge verdict: Runtime Error)

#include<bits/stdc++.h>
using namespace std;

int main() {
	long long int n;
	cin >> n;

	long long int count = 1;

	long long int homuzu = 1000000000000000;

	int i = 0;
	int o = n;

	while (homuzu == 1000000000000000) {
		if (1 <= o && o < 27) {
			homuzu = count-1;
		}else if ((26 * (i + 1)) + i <= o && o < ((26 * (i + 1)) + i) * 26+1) {
			homuzu = count;
		}
		count++;
	}

	string name[26] = { "abcdefghijklmnopqrstuvwxyz" };
	vector <string> ans;

	int a, b, c, d, e, f, g, h,j,k,l,m;

	if (homuzu == 0) {
		cout << name[n - 1] << endl;
	}
	else if (homuzu == 1) {
		a = n / 26;
		b = n % 26;
		ans[0] = name[a-1];
		ans[1] = name[b - 1];
		cout << ans[0] << ans[1] <<  endl;
	}
	else if (homuzu == 2) {
		a = n / 26;
		b = a / 26;
		c = b % 26;
		ans[0] = name[a - 1];
		ans[1] = name[b - 1];
		ans[2] = name[c - 1];
		cout << ans[0] << ans[1] << ans[2] << endl;
	}
	else if (homuzu == 3) {
		a = n / 26;
		b = a / 26;
		c = b / 26;
		d = c % 26;
		ans[0] = name[a-1];
		ans[1] = name[b-1];
		ans[2] = name[c - 1];
		ans[3] = name[d - 1];
		cout << ans[0] << ans[1] << ans[2] <<  ans[3] <<  endl;
	}
	else if (homuzu == 4) {
		a = n / 26;
		b = a / 26;
		c = b / 26;
		d = c / 26;
		e = d % 26;
		ans[0] = name[a - 1];
		ans[1] = name[b - 1];
		ans[2] = name[c - 1];
		ans[3] = name[d - 1];
		ans[4] = name[e - 1];
		cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << endl;
	}
	else if (homuzu == 5) {
		a = n / 26;
		b = a / 26;
		c = b / 26;
		d = c / 26;
		e = d / 26;
		f = e % 26;
		ans[0] = name[a - 1];
		ans[1] = name[b - 1];
		ans[2] = name[c - 1];
		ans[3] = name[d - 1];
		ans[4] = name[e - 1];
		ans[5] = name[f - 1];
		cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << endl;
	}
	else if (homuzu == 6) {
		a = n / 26;
		b = a / 26;
		c = b / 26;
		d = c / 26;
		e = d / 26;
		f = e / 26;
		g = f % 26;
		ans[0] = name[a - 1];
		ans[1] = name[b - 1];
		ans[2] = name[c - 1];
		ans[3] = name[d - 1];
		ans[4] = name[e - 1];
		ans[5] = name[f - 1];
		ans[6] = name[g - 1];
		cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << ans[6] << endl;
	}
	else if (homuzu == 7) {
		a = n / 26;
		b = a / 26;
		c = b / 26;
		d = c / 26;
		e = d / 26;
		f = e / 26;
		g = f / 26;
		h = g % 26;
		ans[0] = name[a - 1];
		ans[1] = name[b - 1];
		ans[2] = name[c - 1];
		ans[3] = name[d - 1];
		ans[4] = name[e - 1];
		ans[5] = name[f - 1];
		ans[6] = name[g - 1];
		ans[7] = name[h - 1];
		cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << ans[6] << ans[7] << endl;
	}
	else if (homuzu == 8) {
		a = n / 26;
		b = a / 26;
		c = b / 26;
		d = c / 26;
		e = d / 26;
		f = e / 26;
		g = f / 26;
		h = g / 26;
		j = g % 26;
		ans[0] = name[a - 1];
		ans[1] = name[b - 1];
		ans[2] = name[c - 1];
		ans[3] = name[d - 1];
		ans[4] = name[e - 1];
		ans[5] = name[f - 1];
		ans[6] = name[g - 1];
		ans[7] = name[h - 1];
		ans[8] = name[j - 1];
		cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << ans[6] << ans[7] << ans[8] << endl;
	}
	else if (homuzu == 9) {
	a = n / 26;
	b = a / 26;
	c = b / 26;
	d = c / 26;
	e = d / 26;
	f = e / 26;
	g = f / 26;
	h = g / 26;
	j = g / 26;
	k = k % 26;
	ans[0] = name[a - 1];
	ans[1] = name[b - 1];
	ans[2] = name[c - 1];
	ans[3] = name[d - 1];
	ans[4] = name[e - 1];
	ans[5] = name[f - 1];
	ans[6] = name[g - 1];
	ans[7] = name[h - 1];
	ans[8] = name[j - 1];
	ans[9] = name[k - 1];
	cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << ans[6] << ans[7] << ans[8] << ans[9] <<endl;
	}
	else if (homuzu == 10) {
	a = n / 26;
	b = a / 26;
	c = b / 26;
	d = c / 26;
	e = d / 26;
	f = e / 26;
	g = f / 26;
	h = g / 26;
	j = g / 26;
	k = k / 26;
	l = k % 26;
	ans[0] = name[a - 1];
	ans[1] = name[b - 1];
	ans[2] = name[c - 1];
	ans[3] = name[d - 1];
	ans[4] = name[e - 1];
	ans[5] = name[f - 1];
	ans[6] = name[g - 1];
	ans[7] = name[h - 1];
	ans[8] = name[j - 1];
	ans[9] = name[k - 1];
	ans[10] = name[l - 1];
	cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << ans[6] << ans[7] << ans[8] << ans[9] << ans[10] << endl;
	}
	else if (homuzu == 11) {
	a = n / 26;
	b = a / 26;
	c = b / 26;
	d = c / 26;
	e = d / 26;
	f = e / 26;
	g = f / 26;
	h = g / 26;
	j = g / 26;
	k = k / 26;
	l = k / 26;
	m = l % 26;
	ans[0] = name[a - 1];
	ans[1] = name[b - 1];
	ans[2] = name[c - 1];
	ans[3] = name[d - 1];
	ans[4] = name[e - 1];
	ans[5] = name[f - 1];
	ans[6] = name[g - 1];
	ans[7] = name[h - 1];
	ans[8] = name[j - 1];
	ans[9] = name[k - 1];
	ans[10] = name[l - 1];
	ans[11] = name[m - 1];
	cout << ans[0] << ans[1] << ans[2] << ans[3] << ans[4] << ans[5] << ans[6] << ans[7] << ans[8] << ans[9] << ans[10] << name[11] << endl;
	}
	return 0;
}