/* * No Minus Signs (via Michael J. Dinneen) */ #include #include using namespace std; long mydiv(long n, int b) { long ans = n / b; return (n % b < 0 ? ++ans : ans); } int mymod(long n, int b) { int ans = n % b; return (ans < 0 ? ans - b : ans); } void toBase(long n, int b, char str[]) { char s[25]; int cnt = 0; while (n) { int dig = mymod(n,b); n = mydiv(n, b); s[cnt++] = dig + '0'; } int cnt2 = 0; while (cnt > 0) { str[cnt2++] = s[--cnt]; } str[cnt2] = 0; } long toBase10(long n, int b) { long basep = 1; long num = 0; while (n) { num += (n % 10) * basep; n = n / 10; basep *= b; } return num; } int main(int argc, char *argv[]) { char str[25]; long n; int b; while (true) { cin >> n >> b; if (n==0 && b==0) break; long d = toBase10(n, b); toBase(d, -b, str); cout << (str[0] ? str : "0") << endl; } }