Dado um número inteiro positivo N
, produza o número de pares de números inteiros, de 0 <= a <= b < 2**N
modo que a*b >= 2**N
.
Regras
- Você pode assumir que
N
é menor ou igual à largura máxima de bits para números inteiros no seu idioma (por exemplo, para C,N
não excederá32
ou64
, dependendo da arquitetura da máquina). Se o seu idioma for capaz de lidar com números inteiros de largura arbitrária, não haverá limite superiorN
.
Casos de teste
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
condição.{0, 3, 19, 96, 437, 1876, 7804, 31904, 129170, 520135, 2088143, 8369175, 33512744, 134128704, 536681553, 2147082274, 8589086503, 34357951447}
Respostas:
Python 2,
7568 bytesExperimente online!
Isso é executado em operações O (2 n / 2 ) em vez de O (2 n ) ou O (2 2 · n ), portanto, funciona com entradas muito maiores.
(Observe que existe um algoritmo O (2 n / 3 ) ainda mais rápido .)
fonte
x=0;y=0
porx=y=0
2^{N/3}
solução também.Gelatina ,
1210 bytesConclui os casos de teste combinados em menos de 3 segundos.
Experimente online!
Como funciona
fonte
MATL ,
109 bytesExperimente online!
Isso tenta todos os pares possíveis. Ele fica sem memória no intérprete online para exceder a entrada
12
.Explicação
fonte
Braquilog , 21 bytes
Experimente online!
fonte
A
a essa variável, economizando um byte.05AB1E ,
1312 bytes-1 byte graças a Emigna
Experimente online!
Explicação
fonte
P
é suficiente aqui.JavaScript (ES7),
706560 bytesCasos de teste
Mostrar snippet de código
fonte
Mathematica, 37 bytes
Experimente online em http://sandbox.open.wolframcloud.com . O Mathematica não tem limite de números inteiros e esse algoritmo é executado no tempo 2 n , portanto é muito lento para grandes
n
.fonte
Clojure, 78 bytes
fonte
Na verdade , 13 bytes
Experimente online!
Uma implementação literal do problema. Bastante lento.
fonte
╙;r;∙♂S╔♂π♀≥Σ
(edição menor à versão que eu postei no chat )PHP , 62 bytes
Experimente online!
fonte
Python 2 , 53 bytes
Experimente online!
fonte
Gelatina , 11 bytes
Experimente online!
Uma implementação literal do problema. Bastante lento.
fonte