Die Alternating Harmonic Series ist eine bekannte konvergente Serie.
"Klar" ist es offensichtlich, dass es zum natürlichen log von 2 konvergiert. Oder tut es?
Da die Reihe nicht absolut konvergent ist , kann ich sie durch einfaches Umstellen der Begriffe an alles heranführen, was ich will. Angenommen, ich möchte, dass die Reihe zu e konvergiert . Alles, was ich tun müsste, ist Folgendes:
Wenn Sie das Muster nicht verstanden haben, gibt es kein offensichtliches. So funktioniert das:
- Betrachten Sie die Terme der alternierenden harmonischen Reihen als positive und negative Terme.
- Addieren Sie gerade genug positive Begriffe, um unser Ziel zu übertreffen (e). (aka
sum > target
) - Subtrahieren Sie den nächsten negativen Term.
- Gehen Sie zurück zu 2.
Beachten Sie, dass Sie in Schritt 2, falls vorhanden sum == target
, einen weiteren positiven Term hinzufügen sollten.
Daraus können wir eine mit jeder Zahl verbundene Sequenz wie folgt definieren:
- Folgen Sie dem obigen Algorithmus
- Geben Sie für jeden positiven Term 1 aus.
- Geben Sie für jeden negativen Term 0 aus.
Nennen wir diese Sequenz das "Harmonische Bitmuster" einer Zahl. Zum Beispiel beginnt der HBP von e wie folgt:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
Ihre Herausforderung:
Sie erhalten:
- ein rationales Eingabeziel im Bereich [-10, 10] (Anmerkung: sogar 10 über die harmonische Reihe nimmt viele Millionen von Begriffen zu erreichen). Dies kann eine Dezimalzahl sein (aka
1.1
) oder Sie können eine rationale direkt nehmen (aka12/100
) - ein positiver
int
n- Eingang, der die Anzahl der auszugebenden Terme des harmonischen Bitmusters angibt.
Es wird erwartet, dass Sie das genaue harmonische Bitmuster des Ziels mit der angegebenen Anzahl von Begriffen ausgeben . Sie können durch Leerzeichen getrennte Werte, durch Kommas getrennte Werte, keine Trennung usw. ausgeben. Nur solange das Muster von 0 und 1 gut sichtbar ist und mit gleichmäßiger Trennung von links nach rechts gelesen wird.
Testfälle
>>> 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
Beachten Sie, dass da -9.8
so groß ist, die erste 1
Ausgabe irgendwo um den 149496620
dritten Term erfolgt (der über Gleitkommazahlen berechnet wurde, sodass der Wert möglicherweise nicht genau ist).
h a p q
statth p q a
Speichern eines Bytes.Python 3,
128124 BytesDies nutzt Pythons
Fraction
Klasse.quelle
'x'*int(input())
?