5 votos

Algoritmo del número de teléfono

Si un número de teléfono se convirtió en una ecuación, ¿qué tan difícil sería para aplicar ingeniería inversa al número de teléfono original ? Cuántas posibles (10 dígitos, de América del Norte) números de teléfono podría ser una solución reducido?

Es decir, si:

1 (555) 123-4567 se convirtió 1 * 555 * 123 - 4567 = 63698

o

1 * A * B - C = D,

cuántas posibles valores de a, B Y C puede ser producido a partir de cualquier valor de D?

63698 = 1 * ? * ? - ?

Dado: El número se origina en los Estados Unidos, y por lo tanto se ajusta a la North American numbering Plan (NXX-NXX-XXXX,donde N es cualquier dígito del 2 al 9 y X es cualquier dígito de 0 a 9).De esto sabemos que a y B es un subconjunto de 3 dígitos y C para ser un número de 4 dígitos.

Qué enfoques sería mejor cuando se piensa acerca de este problema?

2voto

Ragnar Puntos 5614

El valor máximo de hash de un número de teléfono es (aproximadamente)$1000\cdot 1000-0=10^6$. El valor de hash mínimo es$100\cdot 100-10000=0$. El número de números de teléfono legales es$8^210^8=6.4\cdot 10^9$. Esto significa que (en promedio) aproximadamente$\frac{6.4\cdot 10^9}{10^6}=6400$ números de teléfono corresponden a un valor hash. No sé si esto es lo que estás buscando, pero es una primera aproximación razonable, creo. Por lo tanto, hay$6400$ triples$(A,B,C)$ en promedio para cada valor hash.

1voto

m0j0 Puntos 181

Puedo obtener railed para este, pero sólo calcularlo para todos los valores posibles.

Solo tendrías que calcular los casos para los que$A \geq B$ (digamos) porque la multiplicación es conmutativa.

Por lo tanto, calcule todos los productos$AB$ que necesita ($A \geq B$) y organícelos en un histograma con el tamaño bin de$1$. Si$A \neq B$, cuente dos veces. A continuación, copie este histograma$9999$ más veces, desplazando una copia cada uno de$1$ a$9999$ lugares a la izquierda y añádalos todos.

1voto

dtldarek Puntos 23441

El código está disponible en pastebin .

Los diez primeros excluyendo 0-99 de A y B:

 22854 at 4677
22854 at 5337
22852 at 5302
22852 at 5303
22852 at 5304
22852 at 5340
22852 at 5343
22852 at 5344
22850 at 4161
22850 at 4162
 

Los diez primeros excluyendo 0-199 de A y B:

 16021 at 193853
16021 at 193854
16021 at 193905
16021 at 193857
16021 at 195209
16021 at 193855
16020 at 195243
16020 at 195210
16019 at 195206
16019 at 193851
 

Espero que esto ayude $\ddot\smile$

0voto

Shabaz Puntos 403

Dado que D, me volvería a lazo$n$ de$0$ a$9999$, el factor$D+n$ a continuación, busque formas de dividir los factores para hacer números aceptables. Tenga en cuenta que$D$ tiene que ser al menos$200^2-9999=30001$ si yo quería que el$D$ que produjo la mayoría de las opciones, me gustaría llenar una matriz con el número de representaciones de números de% a$30001$ y luego encuentre el intervalo de$999^2$ con el total más alto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X