[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obm-l] Conversão de Números em Base Negativa



Henrique Rennó wrote:
> Olá Ricardo!
> Por acaso você é o ricbitbr no TopCoder???
Sou eu sim, sempre que dá eu faço uns SRMs por lá.

> Ainda estou em dúvida com relação a esse problema. Suponha a seguinte 
> conversão:
>
> 1001(10) = n(-2)
>
> ou seja, passar o número 1001 na base 10 para n na base -2. (resposta: 
> n = 10000111001)
>
> Qual seria o procedimento para efetuar essa conversão???

Converter de decimal pra binário você sabe né? Se for ímpar, subtrai 1 e 
divide por 2; se for par, divide por 2; repete até chegar em zero. Com 
base -2 é exatamente a mesma coisa, só que você divide por -2:

1001 (1)
1001-1=1000/-2=-500
-500 (0)
-500/-2=250
250 (0)
250/-2=-125
-125 (1)
-125-1=-126/-2=63
63 (1)
63-1=62/-2=-31
-31 (1)
-31-1=-32/-2=16
16 (0)
16/-2=-8
-8 (0)
-8/-2=4
4 (0)
4/-2=-2
-2 (0)
-2/-2 =1
1 (1)
1-1 =0

Lendo os restos de trás para frente, 10000111001. Agora é só generalizar 
para outras bases (negativas ou complexas).

--
Ricardo Bittencourt
=========================================================================
Instruções para entrar na lista, sair da lista e usar a lista em
http://www.mat.puc-rio.br/~nicolau/olimp/obm-l.html
=========================================================================