Red de conocimiento informático - Problemas con los teléfonos móviles - python Shuangseqiu, los primeros 6 dígitos son 1-33 (no repetidos), el séptimo dígito es 1-16, ¿cómo programar esto? ¿Cómo implemento lo que escribí?

python Shuangseqiu, los primeros 6 dígitos son 1-33 (no repetidos), el séptimo dígito es 1-16, ¿cómo programar esto? ¿Cómo implemento lo que escribí?

Por supuesto.

Para 6+1, hay 12,76 mil millones de permutaciones. Cada uno de ellos debe ejecutar al menos las tres líneas más internas de for, if y +=. Incluso si solo toma 10 ciclos de instrucción, son 127,6 mil millones de ciclos de instrucción. Suponiendo que esté ejecutando a una frecuencia 3G, solo ejecutará. 3 mil millones de instrucciones en un segundo, esto también toma 40 segundos para completarse, sin mencionar solo un m = m + 1, que se puede completar con muchas más de 10 instrucciones, porque este es un proceso de restablecimiento de m. objeto en Python, más el bucle externo, en general, es un proceso sin sentido porque lleva demasiado tiempo.

Si calculas la combinación, será mucho menor. La combinación es la parte de todas las permutaciones donde los primeros 6 números no se repiten. Esto es mucho menor. Elige 6 de 33 y luego multiplica por. 16, solo hay 17721088. Para esta combinación, la cantidad es mucho menor.

Por lo tanto, es necesario cambiar toda la idea. Si no utiliza cálculos combinados, debe recorrer todas las combinaciones para obtener el número total. No es imposible, pero no está escrito así. La combinación es que los primeros 6 números no se repiten. Entonces, el primer número ha determinado el valor máximo del segundo número. En otras palabras, el segundo parámetro del rango del bucle interno se toma directamente de la variable del bucle externo. , ese es Can.

La optimización adicional son las primeras 6 capas de for, el primer parámetro del rango es 6, 5, 4, 3, 2, 1 respectivamente. El resultado es el mismo, puede ser aproximadamente un 10% más rápido.