def decode(s)
(Base ** s.size - 1) / (Base - 1) +
s.split(//).map {|c| c.ord - 'A'.ord}.inject(0) {|x, k| x * Base + k}
end
def encode(x)
n = 1.upto(Float::INFINITY).find {|k| (x -= Base ** (k - 1)) < Base ** k}
n.times.inject('') do |s,|
x, y = x.divmod(Base)
(y + 'A'.ord).chr + s
end
end
def solve(s)
puts "#{s} = #{eval(s)}"
end
Base = 26
solve "decode('DBA')"
solve "encode(125)"
ZGVmIGRlY29kZShzKQoJKEJhc2UgKiogcy5zaXplIC0gMSkgLyAoQmFzZSAtIDEpICsKCXMuc3BsaXQoLy8pLm1hcCB7fGN8IGMub3JkIC0gJ0EnLm9yZH0uaW5qZWN0KDApIHt8eCwga3wgeCAqIEJhc2UgKyBrfQplbmQKCmRlZiBlbmNvZGUoeCkKCW4gPSAxLnVwdG8oRmxvYXQ6OklORklOSVRZKS5maW5kIHt8a3wgKHggLT0gQmFzZSAqKiAoayAtIDEpKSA8IEJhc2UgKioga30KCW4udGltZXMuaW5qZWN0KCcnKSBkbyB8cyx8CgkJeCwgeSA9IHguZGl2bW9kKEJhc2UpCgkJKHkgKyAnQScub3JkKS5jaHIgKyBzCgllbmQKZW5kCgpkZWYgc29sdmUocykKCXB1dHMgIiN7c30gPSAje2V2YWwocyl9IgplbmQKCkJhc2UgPSAyNgoKc29sdmUgImRlY29kZSgnREJBJykiCnNvbHZlICJlbmNvZGUoMTI1KSI=