A série harmônica alternada é uma série convergente bem conhecida.
"Claramente", é óbvio que converge para o logaritmo natural de 2. Ou é?
Como a série não é absolutamente convergente , basta reorganizar os termos, posso fazer com que ela se aproxime do que eu quiser. Suponha que eu queira que a série converja para e . Tudo o que eu teria que fazer é o seguinte:
Se você não capturou o padrão, não existe um óbvio. Veja como funciona:
- Considere os termos da série harmônica alternada em termos positivos e negativos.
- Adicione apenas termos positivos suficientes para exceder nossa meta (e). (aka
sum > target
) - Subtraia o próximo termo negativo.
- Volte para 2.
Observe que na etapa 2, se for o caso sum == target
, você deve adicionar outro termo positivo.
A partir disso, podemos definir uma sequência associada a cada número da seguinte maneira:
- Siga o algoritmo acima
- Para cada termo positivo, produto 1.
- Para cada termo negativo, produza 0.
Vamos chamar essa sequência de "Padrão de bits harmonioso" de um número. Por exemplo, o HBP de e começa como:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
Seu desafio:
Você receberá:
- um alvo de entrada racional no intervalo [-10, 10] (nota: até atingir 10 através da série harmônica requer muitos milhões de termos). Pode ser um decimal (aka
1.1
) ou você pode usar um racional diretamente (aka12/100
) - uma entrada
int
n positiva , especificando o número de termos do Padrão de bits harmonioso a serem emitidos.
Espera-se que você envie o padrão de bits harmonioso exato do destino para o número especificado de termos. Você pode gerar valores separados por espaço, separados por vírgula, sem separação, etc; desde que o padrão de 0s e 1s seja claramente visível e lido da esquerda para a direita com uma separação consistente.
Casos de teste
>>> 0, 1
1
>>> 0, 2
10
>>> 0, 7
1000010
>>> 1, 10
1101011011
>>> 1.01, 3
110
>>> 1.01, 24
110101101101101101101101
>>> 2.71, 32
11111111111111111111111111111111
>>> 2.71, 144
111111111111111111111111111111110111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111
>>> -9.8, 100
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Observe que, como -9.8
é muito grande, o primeiro 1
resultado seria algo em torno do 149496620
termo th (que foi calculado por meio de flutuadores, portanto, o valor pode não ser exato).
h a p q
vez deh p q a
salva um byte.Python 3,
128124 bytesIsso faz uso da
Fraction
classe do Python .fonte
'x'*int(input())
?