**Conversion (18 points)**

**Problem description**

We can represent a decimal number in such a way that each Arabic numeral is multiplied by an exponent of the position of the number (minus 1), and the sum of the powers of the base 10. For example: 123 can be expressed as a form of 1*102+2*101+3*100.

Similarly, for a binary number, it can also be expressed as each binary digit multiplied by a position of the number (value-1) as an exponent, with 2 as the sum of the power of the form. Generally, any positive integer R or a negative integer-R can be chosen as the cardinality of a system. If the base is R or-R, then you need to use the digital 0, 1, .... R-1. For example, when r=7, the required digital is 0,1,2,3,4,5 and 6, which is independent of R or-R. If the absolute value of the radix is more than 10, then in order to represent these figures, the English alphabet is usually used to denote numbers greater than 9. For example, for the 16 decimal number, A is used to denote 10, a B to 11, a C for 12, a D for 13, an E for 14, and a F for 15.

In the negative number is the-R as the base, for example, 15 (decimal) is equivalent to 110001 (-2 binary), and it can be represented as a series of 2 and several:

110001=1* (-2) 5+1* (-2) 4+0* (-2) 3+0* (-2)

0* (-2) 1 +1* (-2) 0

**Problem solving**

Design a program, read the cardinality of a decimal number and a negative number, and convert this decimal number to this negative binary:-r∈{-2,-3,-4, ... ,-20}

input

Each line entered has two input data.

The first is the decimal number n ( -32768<=n<=32767), and the second is the base-r of the negative binary number.

output

The result is displayed on the screen, relative to the input, this negative number and its cardinality should be output, if this base is more than 10, then the method is referred to 16 binary processing.

**Sample Example**

Input

30000-2

-20000-2

28800-16

-25000-16

Output

30000=11011010101110000 (base-2)

-20000=1111011000100000 (base-2)

28000=19180 (base-16)

-25000=7fb8 (base-16)

Ideas

Mathematical.

For the binary to be positive, we only need to record the remainder and then reverse the output.

So for the negative, we can also use this method, for the remainder of the case of negative numbers, we need to borrow, pay attention to the borrowed +1 and itself is-R.

Code

1#include <iostream>2 using namespacestd;3 4 intMain () {5 intN, R;6cin>>n>>r; cout<<n<<"=";7 inta[ -], nc=0;8 while(n) {9a[nc]=n%R;TenN/=R; One if(a[nc]<0) { AA[nc]-=r; n++; - } -Nc++; the } - for(inti=nc-1; i>=0; i--) - if(a[i]>=Ten) {CharCh='A'+a[i]-Ten; cout<<ch;} - Elsecout<<A[i]; +cout<<"(Base"<<r<<")"; - return 0; +}

NOIP2000 binary Conversion