Тут на работе зашел разговор о хаскеле, и коллега привел код на нем, вот так д хаскеле выглядит функция, превращающая 1-А, 2-B, ..., 26-Z, 27-AA, ...
letters=map(\x->chr(ord'A'+(x-1)`mod`26)).reverse.takeWhile(>0).iterate(\x->(x-1)`div`26)
Как вам?
int N=27;
const char d='Z'-'A'+1;std::string s;s+=N/d+'A'-1;s+=N%d+'A'-1;
//s - строка