La serie armónica alterna es una serie convergente bien conocida.
"Claramente", es obvio que converge al registro natural de 2. ¿O no?
Como la serie no es absolutamente convergente , simplemente reorganizando los términos, puedo hacer que se acerque a lo que quiera. Supongamos que quiero que la serie converja a e . Todo lo que tendría que hacer es esto:
Si no captó el patrón, no hay uno obvio. Así es como funciona:
- Considere los términos de la serie armónica alterna en términos de términos positivos y negativos.
- Agregue los términos positivos suficientes para superar nuestro objetivo (e). (aka
sum > target
) - Resta el siguiente término negativo.
- Regrese a 2.
Tenga en cuenta que en el paso 2, si es nuestro sum == target
, debe agregar otro término positivo.
A partir de esto, podemos definir una secuencia asociada con cada número de la siguiente manera:
- Sigue el algoritmo de arriba
- Para cada término positivo, salida 1.
- Para cada término negativo, salida 0.
Llamemos a esta secuencia el "Patrón de bits armonioso" de un número. Por ejemplo, el HBP de e comienza como:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
Tu reto:
Se le dará:
- un objetivo de entrada racional en el rango [-10, 10] (nota: incluso alcanzar 10 a través de la serie armónica requiere muchos millones de términos). Esto puede ser un decimal (aka
1.1
) o puede tomar un racional directamente (aka12/100
) - una entrada
int
n positiva , que especifica el número de términos del patrón de bits armonioso para la salida.
Se espera que envíe el patrón de bits armonioso exacto del objetivo al número especificado de términos. Puede generar valores separados por espacios, separados por comas, sin separación, etc. siempre y cuando el patrón de 0s y 1s sea claramente visible y se lea de izquierda a derecha con una separación constante.
Casos de prueba
>>> 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
Tenga en cuenta que, dado que -9.8
es tan grande, lo primero 1
que se generaría es en algún lugar alrededor del 149496620
término th (que se calculó mediante flotantes, por lo que el valor podría no ser exacto).
h a p q
lugar deh p q a
guardar un byte.Python 3,
128124 bytesEsto hace uso de la
Fraction
clase de Python .fuente
'x'*int(input())
?