¿Cuántos números de 6 dígitos son posibles con un máximo de tres dígitos repetidos?
Mi intento:
Las posibilidades son:
A)(3,2,1) Un conjunto de tres dígitos repetidos, otro conjunto de dos dígitos repetidos y otro dígito (como, 353325, 126161)
B)(3,1,1,1) Un conjunto de tres dígitos repetidos y tres dígitos diferentes (como 446394, 888764)
C)(2,2,1,1) Dos conjuntos de dos dígitos repetidos y dos dígitos diferentes (como, 363615, 445598)
D)(2,2,2) Tres conjuntos de dos dígitos repetidos (como, 223344, 547547)
E)(2,1,1,1,1,1) Un conjunto de dos dígitos repetidos y cuatro dígitos diferentes (como 317653, 770986)
F)(1,1,1,1,1,1) Seis dígitos diferentes (como 457326, 912568)
G)(3,3) Dos pares de tres dígitos repetidos. Intentemos calcular cada posibilidad por separado.
F) es el cálculo más fácil.
Intentemos ejercitar el Caso E)
Dividamos el caso en dos partes:
Caso E(1) El cero no es uno de los dígitos
Podemos elegir cualquiera formulario de números números en maneras, el dígito que se repite se puede elegir de 5 maneras, y se pueden permutar los dígitos en maneras. El número total de formas
Caso E(2) El cero es uno de los dígitos.
Caso E(2)(a) Cero es el dígito repetido Necesitamos elegir otros cuatro números que se pueden hacer en maneras, los dígitos se pueden permutar en maneras, pero necesitamos excluir la vez que comienza con cero ( muchos). El número total de formas = .
Caso E(2)(b) El cero no es el dígito repetido Necesitamos elegir otros cuatro números que se pueden hacer en maneras, el dígito repetido se puede elegir de 4 maneras, los dígitos se pueden permutar en maneras, pero necesitamos excluir la vez que comienza con cero ( muchos). El número total de formas = .
Antes de proceder a entrenar los demás casos, quiero saber
Un comienzo: aquí es más fácil contar el número complementario: el número de enteros positivos de 6 dígitos con cuatro o más de un dígito repetidos.
Esto se reduce a solo cuatro casos: (4, 1, 1), (4, 2), (5, 1), (6).
El resto:
(6) es simplemente . Estos son .
(5, 1) es un poco más complicado. Primero hay formas de elegir dos dígitos distintos que no sean cero y asignar cada uno a o . Entonces hay formas de permutar el orden.
Ahora hay un caso donde uno es cero. Hay formas de elegir el otro dígito (no puede ser cero o el número entero es cero). Para cada combinación, hay igualmente formas de permutar el orden. En particular, hay formas de permutar cinco ceros y uno del otro dígito y otro formas de permutar un cero y cinco del otro dígito. Exactamente la mitad de estos son válidos por simetría.
De hecho, la biyección que invierte cada dígito demuestra esta propiedad: si mapeamos, por ejemplo, , exactamente uno de estos será válido para cada par. En este caso, tenemos como cadenas válidas. En total esto da
(4, 2) es similar. Hay maneras de elegir inicialmente y luego formas de permutar el orden.
Si uno es cero, de nuevo hay formas de elegir el otro dígito y para cada combinación el número de formas de permutar el orden es . Esto es
Finalmente (4, 1, 1) . Hay formas de elegir dígitos distintos de cero y asignarlos a una frecuencia. hay entonces permutaciones Esto da
Ahora elige un triplete de dígitos únicos donde uno es cero. Hay formas de hacerlo. Ahora, considere la maneras de hacer una cadena de cuatro 's (r de repetido) y dos 's (s para soltero). si nos dan , por ejemplo, ahora hay formas de elegir uno de los dígitos como el repetido y los otros dos cada uno en uno lugar. De estos, dos no son válidos, es decir, cuando elegimos que el dígito repetido sea cero. Puedes convencerte de que esto es válido para cualquier cadena. Así, esto da
el gran total es . Hay números de seis dígitos en total, por lo que el número deseado es .
Solución verificada en computadora en Python:
def get_frequencies(cycle):
result = 0
for num in range(10**5, 10**6):
digit_freq = [0]*10
for digit in get_digits(num):
digit_freq[digit] += 1
digit_cycle = sorted([x for x in digit_freq if x != 0], reverse=True)
if digit_cycle == cycle:
result += 1
return result
def get_digits(num):
r = []
while num > 0:
r.append(num % 10)
num /= 10
return r
Corriendo con la siguiente función principal:
def main():
print get_frequencies([6], 6)
print get_frequencies([5, 1], 6)
print get_frequencies([4, 2], 6)
print get_frequencies([4, 1, 1], 6)
Produce las siguientes líneas:
9
486
1215
9720
O, más directamente, podemos usar este programa:
def get_frequency_atmost(max_freq, n):
result = 0
for num in range(10**(n-1), 10**n):
digit_freq = [0]*10
for digit in get_digits(num):
digit_freq[digit] += 1
if max(digit_freq) > max_freq:
result += 1
return 10**n - 10**(n-1) - result
que imprime
en la get_frequency_atmost(3, 6)
entrada
Asumiré que la pregunta significa que ningún dígito aparece más de tres veces. Como señala Austin Mohr, la pregunta está mal formulada.
Como el primer dígito no puede ser cero, hay enteros positivos de seis dígitos. Al igual que Soke, excluiré aquellos en los que aparece un dígito cuatro o más veces.
Consideramos casos.
Caso 1: El mismo dígito se usa seis veces.
Como el primer dígito no puede ser cero, hay de estos. Ellos son
Caso 2: un dígito se usa cinco veces, mientras que un dígito diferente se usa una vez.
Hay dos subcasos.
Subcaso 1 : El primer dígito se repite.
Dado que el primer dígito no puede ser cero, hay nueve formas de seleccionar el primer dígito. Debemos seleccionar cuatro de los cinco lugares restantes para colocar las otras ocurrencias del primer dígito. Entonces tenemos nueve opciones para el otro dígito ya que ahora podemos usar cero.
Subcaso 2 : El primer dígito no se repite.
Todavía tenemos nueve formas de seleccionar el primer dígito. Eso nos deja con nueve formas de elegir el dígito repetido que llena los cinco lugares restantes.
Caso 3: un dígito se usa cuatro veces, mientras que un dígito diferente se usa dos veces.
Subcaso 1 : El primer dígito aparece cuatro veces.
Tenemos nueve formas de seleccionar el primer dígito. Tenemos formas de elegir las otras tres posiciones en las que aparece. Tenemos nueve formas de elegir el dígito que llena las dos posiciones abiertas.
Subcaso 2 : El primer dígito aparece dos veces.
Tenemos nueve formas de seleccionar el primer dígito y formas de elegir la otra posición en la que aparece. Tenemos nueve opciones para elegir el dígito repetido que llena las cuatro posiciones abiertas.
Caso 4: un dígito se usa cuatro veces, mientras que los otros dos dígitos se usan una vez cada uno.
Subcaso 1 : El primer dígito se repite.
Tenemos nueve formas de elegir el primer dígito y formas de elegir las otras tres posiciones en las que aparece. Tenemos nueve opciones para la posición abierta más a la izquierda y ocho opciones para la posición restante.
Subcaso 2 : El primer dígito no se repite.
Tenemos nueve formas de elegir el primer dígito. Tenemos nueve formas de elegir el dígito repetido y formas de seleccionar cuatro de las cinco posiciones abiertas en las que colocarlo. Tenemos ocho formas de llenar la posición abierta restante.
Eso da un total de
Por lo tanto, hay
Esto se maneja perfectamente usando funciones generadoras exponenciales. Suponiendo primero que se nos permite tener 0 como primer dígito (por ejemplo, estamos hablando de placas o combinaciones de candados): cada uno de Los dígitos pueden ocurrir hasta tiempos, y el orden de los símbolos importa. La respuesta es
Si desea excluir los ceros iniciales, puede restarlos. Los cuentas usando la misma técnica. Si fuerza que el primer dígito sea cero, tenemos cinco dígitos restantes para seleccionar; puede haber como máximo dos ceros restantes y hasta tres de todos los demás dígitos. Entonces el conteo es
MCT
babai