#include <stdio.h>
char findChar(int B, int width, unsigned long pos) {
if(pos==0)
return B + 'a' - 1;
/*if(pos<=B)
return pos + 'a' - 1;
*/
unsigned long streamlength = 1;
for(int i=1; i<=width; i++) {
streamlength = streamlength * B;
}
streamlength = streamlength * width;
printf("streamlength %lu\n", streamlength
); return '?';
}
char solve(int B, unsigned long X) {
if (B==1) return 'a';
unsigned long sum = 0, term=1, pos=0;
int width=1;
while(1) {
term = term * B;
if (sum + term * width <= X)
sum = sum + term * width;
else {
pos = X-sum;
break;
}
width++;
}
printf("%d %lu %d %lu %lu\n", B
, X
, width
, pos
, sum
);
return findChar(B, width, pos);
}
int main() {
int T, B, X;
for(int i=1; i<=T; i++) {
printf("%c\n", solve
(B
, X
+1)); }
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpjaGFyIGZpbmRDaGFyKGludCBCLCBpbnQgd2lkdGgsIHVuc2lnbmVkIGxvbmcgcG9zKSB7CglpZihwb3M9PTApCgkJcmV0dXJuIEIgKyAnYScgLSAxOwoJCgkvKmlmKHBvczw9QikKCQlyZXR1cm4gcG9zICsgJ2EnIC0gMTsKCSovCgkKCXVuc2lnbmVkIGxvbmcgc3RyZWFtbGVuZ3RoID0gMTsKCWZvcihpbnQgaT0xOyBpPD13aWR0aDsgaSsrKSB7CgkJc3RyZWFtbGVuZ3RoID0gc3RyZWFtbGVuZ3RoICogQjsKCX0KCXN0cmVhbWxlbmd0aCA9IHN0cmVhbWxlbmd0aCAqIHdpZHRoOwoJcHJpbnRmKCJzdHJlYW1sZW5ndGggJWx1XG4iLCBzdHJlYW1sZW5ndGgpOwoJcmV0dXJuICc/JzsKfQoKY2hhciBzb2x2ZShpbnQgQiwgdW5zaWduZWQgbG9uZyBYKSB7CglpZiAoQj09MSkgcmV0dXJuICdhJzsKICAgIHVuc2lnbmVkIGxvbmcgc3VtID0gMCwgdGVybT0xLCBwb3M9MDsgCiAgICBpbnQgd2lkdGg9MTsKICAgIHdoaWxlKDEpIHsKICAgICAgICB0ZXJtID0gdGVybSAqIEI7CiAgICAgICAgaWYgKHN1bSArIHRlcm0gKiB3aWR0aCA8PSBYKQogICAgICAgICAgICBzdW0gPSBzdW0gKyB0ZXJtICogd2lkdGg7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBwb3MgPSBYLXN1bTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICB3aWR0aCsrOwogICAgfSAgICAKICAgIHByaW50ZigiJWQgJWx1ICVkICVsdSAlbHVcbiIsIEIsIFgsIHdpZHRoLCBwb3MsIHN1bSk7CiAgICAKICAgIHJldHVybiBmaW5kQ2hhcihCLCB3aWR0aCwgcG9zKTsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgVCwgQiwgWDsKICAgIHNjYW5mKCIlZCIsICZUKTsKICAgIGZvcihpbnQgaT0xOyBpPD1UOyBpKyspIHsKICAgICAgICBzY2FuZigiJWQgJWQiLCAmQiwgJlgpOwogICAgICAgIHByaW50ZigiJWNcbiIsIHNvbHZlKEIsIFgrMSkpOwogICAgfQogICAgcmV0dXJuIDA7Cn0=