# 数字Nを26進数に直せばいいと思ったがうまくいかない # 簡単と思って超苦しんだ # まず26進数として何桁になるのかを調べる、それがd_count+1 # たとえば26は26以上なのでd_count=1であり2桁 # この26進数を書くと以下のようになる # 0=A,,,,25=Z # 26**1*1+0=AA,,,,26*25+25=ZZ # 26**2*1+0=AAA,,, # https://yukicoder.me/problems/no/327/editorial # たとえばN=10000のとき # 10000>=26なので26を引く(1桁の数字の分)、9974>=26**2なので26**2を引いて(2桁の数字の分)9298 # この9298を26**2の桁、26**1の桁、26**0の桁に分解すると # 9298=26**2*13 (N) + 26**1*19 (T) + 26**0*16 (Q) = NTQ N = int(input()) N_remainder = N alphabets = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' d_count = 0 # まず桁数を調べる # そしてその桁数までの数を引く、たとえば3桁なら1桁の分と2桁の分 # この引き算が重要 for i in range(10): # 26**10 > 10**12 if N_remainder >= 26**(d_count+1): N_remainder -= 26**(d_count+1) d_count += 1 else: break #print('d_count', d_count, 'N_remainder', N_remainder) ans_list = [] for i in range(d_count+1): num = N_remainder//(26**(d_count-i)) ans_list.append(alphabets[num]) N_remainder -= num*(26**(d_count-i)) #print(ans_list) ans = ''.join(ans_list) print(ans)