#include #include #include #include using namespace std; bool pos; int neg2dec(char * num, int r) { int z = 1; int ret = 0; for (int i = 0; num[i]; i++) { ret += (num[i] - '0') * z; z *= r; } return ret; } vector dec2pos(int x, int r) { vector ret; if (r < 0) r *= -1; if (x < 0) { pos = false; x *= -1; } else pos = true; if (x == 0) { ret.push_back(0); return ret; } while (x) { ret.push_back(x % r); x /= r; } // reverse(ret.begin(), ret.end()); return ret; } void pos2neg(vector d, int r) { vector ret; int c = 0; if (r < 0) r *= -1; for (int i = 0; c || i < d.size(); i++) { int t; if (i < d.size()) t = c + d[i]; else t = c; c = t / r; int y = t % r; if ((i % 2 == 1 && pos) || (i % 2 == 0 && !pos)) { // printf("%d %d\n", r, y); ret.push_back((r - y) % r); c += (1 - (r - y) / r); } else ret.push_back(y); } for (int i = ret.size()-1; i >= 0; i--) printf("%d", ret[i]); printf("\n"); } int main() { char str[100], num[100]; int x; while (scanf("%s", str) == 1) { int d; for (d = 0; str[d] != '-'; d++) if (str[d] == 0) break; if (str[d] == 0) break; int r = atoi(str + d); if (str[0] == 't') { scanf("%d", &x); pos2neg(dec2pos(x, r), r); } else { scanf("%s", num); reverse(num, num + strlen(num)); printf("%d\n", neg2dec(num, r)); } } return 0; }