Isso foi inspirado no Problema 13 - Binário Não Repetitivo da recente concorrência do HP CodeWars.
Vamos pegar um número decimal aleatório, digamos
727429805944311
e veja sua representação binária:
10100101011001011111110011001011101010110111110111
Agora divida essa representação binária em subsequências onde os dígitos 0
e 1
alternam.
1010 010101 10 0101 1 1 1 1 1 10 01 10 0101 1 1010101 101 1 1 1 101 1 1
E converta cada subsequência novamente em decimal.
10 21 2 5 1 1 1 1 1 2 1 2 5 1 85 5 1 1 1 5 1 1
A tarefa
Pegue um inteiro único positivo como entrada e faça a saída da sequência de números inteiros positivos obtida pelo processo acima.
Detalhes
- A entrada e a saída devem estar em decimal ou unário.
- Os números na saída devem ser separados de maneira sensível e legível por humanos, e devem estar em decimal ou unário. Nenhuma restrição no espaço em branco. Estilos de saída válidos:
[1,2,3]
,1 2 3
,1\n2\n3
onde\n
são novas linhas literais, etc.
Casos de teste
Input | Output
0 | 0
1 | 1
2 | 2
3 | 1 1
4 | 2 0
5 | 5
6 | 1 2
7 | 1 1 1
8 | 2 0 0
9 | 2 1
10 | 10
50 | 1 2 2
100 | 1 2 2 0
1000 | 1 1 1 1 10 0 0
10000 | 2 1 1 2 0 2 0 0 0
12914 | 1 2 2 1 1 2 2
371017 | 5 42 10 2 1
Nota adicional: todos os números na saída devem estar no formato (2^k-1)/3
ou 2*(2^k-1)/3
. Ou seja, 0 1 2 5 10 21, 42, 85, 170, ...
que é A000975 no OEIS.
|tac
permanecerá na minha resposta então :)