#include #include #include using namespace std; int main() { while (1) { char jak; int r; char liczba[110]; char dummy[10]; scanf("%c\n", &jak); if (jak == 'e') break; if (jak == 't') { int n; scanf("%1s%d %d\n", dummy, &r, &n); int krok[100]; if (n < 0) { r = -r; n = -n; krok[0] = 1; int i; int krokmnoz = r; for (i = 1; krok[i - 1] < n; ++i) { krok[i] = krok[i - 1] + r*krokmnoz - krokmnoz; // printf("krok[%d]: %d\n", i, krok[i]); krokmnoz *= r*r; } int kol = 2*(i - 1); // printf("r: %d kol: %d\n", r, kol); int mnoz = 1; vector v; for (int i = 0; i < kol; ++i) { // printf("i = %d krok[i/2]: %d (n - krok[i/2])/mnoz: %d\n", i, krok[i/2], (n - krok[i/2])/mnoz); if (i%2 == 0) v.push_back(r - 1 - ((n - krok[i/2])/mnoz)%r); else v.push_back(((n - krok[i/2])/mnoz + 1)%r); mnoz *= r; } for(vector::reverse_iterator it = v.rbegin(); it != v.rend(); ++it) printf("%d", *it); printf("\n"); } else { r = -r; if (n == 0) printf("0\n"); else if (n < r) printf("%d\n", n); else { krok[0] = r; int i; int krokmnoz = r*r; for (i = 1; krok[i - 1] <= n; ++i) { krok[i] = krok[i - 1] + r*krokmnoz - krokmnoz; // printf("krok[%d]: %d\n", i, krok[i]); krokmnoz *= r*r; } int kol = 2*(i - 1) + 1; // printf("r: %d kol: %d\n", r, kol); int mnoz = 1; vector v; v.push_back(((n - 0)/mnoz)%r); mnoz *= r; for (int i = 1; i < kol; ++i) { // printf("i = %d krok[i/2]: %d (n - krok[i/2])/mnoz: %d, mnoz: %d\n", i, krok[(i - 1)/2], (n - krok[(i - 1)/2])/mnoz, mnoz); if (i%2 == 0) v.push_back(((n - krok[(i - 1)/2])/mnoz + 1)%r); else v.push_back(r - 1 - ((n - krok[(i - 1)/2])/mnoz)%r); mnoz *= r; } for(vector::reverse_iterator it = v.rbegin(); it != v.rend(); ++it) printf("%d", *it); printf("\n"); } } } else { scanf("%3s%d %s\n", dummy, &r, liczba); int res = 0; int mnoz = 1; for (int i = strlen(liczba) -1; i >= 0; --i) { res += (liczba[i] - '0')*mnoz; mnoz *= r; } printf("%d\n", res); } } return 0; }