Dados A e B com 0 < A < B e B ≤ 1024, o problema consiste em determinar a representação do número A / B. Alguns números têm representação exacta, mas outros têm dizimas infinitas.
Dos que não têm representação finita, alguns têm uma parte fixa e outros não.
Exemplos:
- 1 / 2 = 0.5
- 127 / 128 = 0.9921875
- 1 / 7 = 0.142857142857... não tem parte fixa e o período “142857” repete-se indefinidamente.
- 19 / 44 = 0.43181818... a parte fixa é “43” e a parte periódica é “18”.
Assim, o objectivo é apresentar o número no formato "parte_fixa#período".
Este problema faz-nos regressar aos tempos da escola primária onde fazíamos a divisão à mão.
A diferença entre as fracções com representação finita e infinita é que na finita atingimos resto zero na divisão do numerador e do denominador, e na infinita não.
No fundo, o que queremos fazer é simular a divisão como aprendemos na primária e parar se nos depararmos com um resto da divisão já calculado anteriormente, pois quer dizer que temos uma dízima infinita periódica.
Parece simples mas convém ter alguns cuidados. É normalíssimo cometer erros a detectar o período.
Exemplo: 1 / 330 = "00#30"
Mais um caso de teste: 1 / 1023 = "#000977517106549364613880742913".Exemplo: 1 / 330 = "00#30"
A resposta pode ser longa. O número 1 / 1021 tem um período com 1020 dígitos!
Sem comentários:
Enviar um comentário