Seria Alternating Harmonic to dobrze znana seria konwergentna.
„Oczywiście”, oczywiste jest, że zbiega się on z logarytmem naturalnym 2. Czy to prawda?
Ponieważ seria nie jest absolutnie zbieżna , po prostu zmieniając warunki, mogę sprawić, że zbliży się do wszystkiego, co chcę. Załóżmy, że chcę, aby seria była zbieżna do e . Wszystko, co musiałbym zrobić, to:
Jeśli nie złapałeś wzoru, nie ma oczywistego. Oto jak to działa:
- Rozważ warunki przemiennego szeregu harmonicznych w kategoriach dodatnich i ujemnych.
- Dodaj razem tylko tyle pozytywnych warunków, aby przekroczyć nasz cel (e). (aka
sum > target
) - Odejmij następny ujemny termin.
- Wróć do 2.
Pamiętaj, że w kroku 2, jeśli my sum == target
, powinieneś dodać kolejny pozytywny termin.
Na tej podstawie możemy zdefiniować sekwencję związaną z każdą liczbą w następujący sposób:
- Postępuj zgodnie z powyższym algorytmem
- Dla każdego pozytywnego składnika wynik 1.
- Dla każdego ujemnego warunku wyjście 0.
Nazwijmy tę sekwencję „harmonicznym wzorem bitowym” liczby. Na przykład HBP e zaczyna się od:
1, 1, 1, 1, <32 times>, 0, 1, 1, <54 times>, 0, 1, 1, ...
Twoje wyzwanie:
Dostaniesz:
- racjonalny cel wejściowy w zakresie [-10, 10] (uwaga: nawet osiągnięcie 10 za pomocą szeregu harmonicznych zajmuje wiele milionów terminów). Może to być po przecinku (aka
1.1
) lub możesz wziąć wymierne bezpośrednio (aka12/100
) - dodatnie wejście
int
n , określające liczbę terminów Harmonijnego Wzorca Bitowego do wysłania.
Oczekuje się, że wyświetlisz dokładny Harmonijny Wzór Bitowy celu na określoną liczbę terminów. Możesz wyświetlać wartości rozdzielone spacjami, rozdzielone przecinkami, bez separacji itp .; tak długo, jak wzór zer i jedynek jest wyraźnie widoczny i odczytywany od lewej do prawej ze spójnym rozdziałem.
Przypadki testowe
>>> 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
Zauważ, że ponieważ -9.8
jest tak duży, pierwszy, 1
który byłby wyprowadzony, znajduje się gdzieś w pobliżu 149496620
tego wyrażenia (który został obliczony za pomocą liczb zmiennoprzecinkowych, więc wartość może nie być dokładna).
h a p q
zamiasth p q a
zapisuje bajt.Python 3,
128124 bajtówWykorzystuje to
Fraction
klasę Pythona .źródło
'x'*int(input())
?