Biorąc pod uwagę dodatnią liczbę całkowitą N
, wypisz liczbę par liczb całkowitych 0 <= a <= b < 2**N
takich, że a*b >= 2**N
.
Zasady
- Możesz założyć, że
N
jest mniejsza lub równa maksymalnej szerokości bitów dla liczb całkowitych w twoim języku (np. Dla C,N
nie przekroczy32
lub64
, w zależności od architektury maszyny). Jeśli twój język jest w stanie obsługiwać liczby całkowite o dowolnej szerokości, nie ma górnej granicyN
.
Przypadki testowe
1 0
2 3
3 19
4 96
5 437
6 1876
7 7804
8 31904
9 129170
10 520135
11 2088143
12 8369175
13 33512744
14 134128704
15 536681553
16 2147082274
a <= b
warunku.{0, 3, 19, 96, 437, 1876, 7804, 31904, 129170, 520135, 2088143, 8369175, 33512744, 134128704, 536681553, 2147082274, 8589086503, 34357951447}
Odpowiedzi:
Python 2,
7568 bajtówWypróbuj online!
Działa to w operacjach O (2 n / 2 ) zamiast O (2 n ) lub O (2 2 · n ), więc działa na znacznie większych wejściach.
(Zauważ, że istnieje jeszcze szybszy algorytm O (2 n / 3 ) .)
źródło
x=0;y=0
nax=y=0
2^{N/3}
rozwiązanie.Galareta ,
1210 bajtówKończy połączone przypadki testowe w mniej niż 3 sekundy.
Wypróbuj online!
Jak to działa
źródło
MATL ,
109 bajtówWypróbuj online!
Spróbuje wszystkich możliwych par. W tłumaczeniu online zabrakło pamięci na przekroczenie wartości wejściowej
12
.Wyjaśnienie
źródło
Brachylog , 21 bajtów
Wypróbuj online!
źródło
A
tej zmiennej, oszczędzając jeden bajt.05AB1E ,
1312 bajtów-1 bajt dzięki Emignie
Wypróbuj online!
Wyjaśnienie
źródło
P
tutaj.JavaScript (ES7),
706560 bajtówPrzypadki testowe
Pokaż fragment kodu
źródło
Mathematica, 37 bajtów
Wypróbuj online na stronie http://sandbox.open.wolframcloud.com . Mathematica nie ma limitu liczb całkowitych, a ten algorytm działa w czasie 2 n , więc dla dużych jest bardzo wolny
n
.źródło
Clojure, 78 bajtów
źródło
Właściwie 13 bajtów
Wypróbuj online!
Dosłowne wdrożenie problemu. Całkiem wolno.
źródło
╙;r;∙♂S╔♂π♀≥Σ
(drobna edycja do wersji, którą opublikowałem na czacie )PHP , 62 bajty
Wypróbuj online!
źródło
Python 2 , 53 bajty
Wypróbuj online!
źródło
Galaretka , 11 bajtów
Wypróbuj online!
Dosłowne wdrożenie problemu. Całkiem wolno.
źródło