35 votos

Hacer el cambio de un dólar (y otros problemas de particionamiento número)

Yo estaba tratando de resolver un problema similar a la de "¿cuántas maneras hay de hacer el cambio por un dólar" problema. Me encontré con un sitio que me dijo que podía usar una generación de función similar a la que se cita a continuación:

La respuesta a nuestro problema (293) es el coeficiente de $x^{100}$ en el recíproco de los siguientes:

$(1-x)(1-x^5)(1-x^{10})(1-x^{25})(1-x^{50})(1-x^{100})$

Pero me debe faltar algo, como yo no puede entender cómo se da ese a $293$. Cualquier ayuda sería apreciada.

15voto

GmonC Puntos 114

Para el registro, voy a copiar un fragmento de forma que esta respuesta a una pregunta que estaba cerrada, como un duplicado a esta pregunta, como se explica exactamente cómo calcular el coeficiente usado explícitamente, lo que es realmente el mismo que el método dado en la respuesta por ray en una más algorítmica de la formulación. Me acaba de dar el procedimiento aquí, para más explicaciones, véase la respuesta vinculado.

Deje $c$ denotar una matriz de $101$ enteros indexado de$0$$100$.

  • Inicializar la matriz de modo que $c[0]=1$ $c[i]=0$ todos los $i>0$.
  • Para $k=1,5,10,25,50,100$ (en cualquier orden):
    • para $i=0,1,\ldots,100-k$ (en este orden):
      • agregar$c[i]$$c[i+k]$.
  • Ahora $c[100]$ da su respuesta.

Este cálculo da el coeficiente de $x^{100}$ en el poder de la serie para $1/((1-x)(1-x^5)(1-x^{10})(1-x^{25})(1-x^{50})(1-x^{100}))$, lo que equivale a $293$.

En este caso particular no es un truco que le ahorrará tiempo y la memoria, aprovechando el hecho de que todos los valores de $k$ con la excepción de $k=1$ son divisibles por$~5$. Ya que tenemos la libertad de elegir el orden de las$~k$, se puede mantener $k=1$ para el final, y observar que sólo los valores de $c[i]$ $i$ divisible por$~5$ será distinto de cero cuando llegamos a la última instancia del ciclo de $k=1$. Pero entonces bien podríamos inicial de bucles para calcular sólo a ellos (lo hacen sólo los $i$ en el bucle interno que sean divisibles por $5$). También el último bucle de $k=1$ es simplemente calculando la suma de todos los ingresos en $c[100]$, de modo que bien podría tomar sólo la suma de los distinto de cero entradas. Así se obtiene un procedimiento que sólo se trata de la $21$ múltiplos de $5$$100$, y se puede hacer incluso con la mano.

Voy a añadir que esto no es asintóticamente método más rápido para calcular el coeficiente de $x^n$ en la serie determinada por un gran $n$. Se puede hacer en un número constante de operaciones aritméticas, haciendo que el denominador una potencia de el mínimo común múltiplo de los factores escrito, que en este caso sería la sexta potencia de $1-x^{100}$ como es divisible entre otros factores, por ejemplo,$1-x^{100}=(1-x^{25})(1+x^{25}+x^{50}+x^{75})$. Los coeficientes involucrados para transformar todos los factores en este mínimo común múltiplo debe, por supuesto, también se multiplica en el numerador para mantener la expresión equivalente. El numerador ahora es un polinomio que puede ser explícitamente calculada de una vez por todas, y esto se multiplica por una potencia negativa, aquí $(1-x^{100})^{-6}$, cuyos coeficientes pueden ser calculadas (en la demanda!) el uso de los coeficientes binomiales. Para encontrar el coeficiente en el resultado de un solo monomio $x^n$ requiere de la multiplicación de cada uno de los número fijo de los coeficientes en el numerador factor por uno de los coeficientes del denominador factor y sumando; todo esto da un número constante de operaciones. Esto requiere más preparación y programación de hacer, a continuación, el método esbozado anteriormente, que para el valor como $n=100$ realmente no pagar. Sin embargo, si la pregunta fuera ¿cuántas maneras hay de hacer un cambio para mil millones (en el sentido de mil millones de dólares), sólo el uso de las mismas monedas (suponiendo suficiente existía), uno tendría $n=10^{11}$ y la correcta coeficiente de 13333333398333333445333333413833333354500000001 para ese caso habría sido difícil de calcular de manera diferente. Bono de la pregunta, explique por qué hay tantos dígitos repetidos en este coeficiente.

10voto

Alex Bolotov Puntos 249

Usted debe ser capaz de calcular utilizando una Fracción Parcial de la representación (la participación de los números complejos). Por ejemplo ver esta respuesta anterior: Mínimo multi-subconjunto suma a un objetivo.

Nota, esta fracción parcial de expansión debe ser calculado sólo una vez. Una vez que tienes eso, puede calcular el camino para hacer el cambio de una cantidad arbitraria con bastante rapidez.

En este caso, dudo que realmente hizo que para encontrar el coeficiente de $x^{100}$. Es probablemente la más rápida con solo multiplicar, ignorando los términos que no contribuyen a que el coeficiente de $x^{100}$. O usted puede tratar de computación de la fracción parcial de la representación de sólo algunos de los términos y, a continuación, multiplique.

Nota, si usted está multiplicando a cabo para encontrar el coeficiente de $x^{100}$, sería más fácil para no ir a la recíproca, que surge de la consideración de un número infinito de términos.

Usted necesidad justa de multiplicar

$$ (\sum_{j=0}^{100} x^j)\ (\sum_{j=0}^{20} x^{5j})\ (\sum_{j=0}^{10} x^{10j})\ (\sum_{j=0}^{4} x^{25j})\ (1 + x^{100})$$

lo que equivaldría a enumerar las diferentes formas de hacer el cambio (y, de hecho, es la forma en que hemos llegado con la generación de la función en el primer lugar).

Usted podría hacer otras cosas, como la computación en la $100^{th}$ derivado en $0$, o el cálculo de una integral de contorno de la generación de la función dividida por $x^{100}$, pero creo que fue esa ruta.

Espero que ayude.

6voto

kevingessner Puntos 351

Podemos facilitar el cálculo señalando que el número de maneras de cambio de 100 es igual al número de formas de representar los números menores o iguales a $100$ como la suma de los números de $5, 10, 25, 50$$100$, ya que las monedas pueden compensar cualquier diferencia.

Destacar que todos estos números son divisibles por $5$ podemos concluir que el número de maneras de representar la $100$ en unidades de $1, 5, 10, 25, 50$ $100$ es la suma de los coeficientes de hasta e incluyendo el término en $x^{20}$ en la expansión de

$$ \frac{1}{(1-x)(1-x^2)(1-x^5)(1-x^{10})(1-x^{20})} . $$

4voto

Shabaz Puntos 403

"Sólo" tienes que seguir la receta: encontrar el formal serie de energía (sin necesidad de pensar en convergencia) que se define y comprobar el número que multiplica x ^ 100. Hay una razón que pongo sólo entre comillas. No hay ninguna ruta obvia a 293 que puedo ver. Mathematica puede hacerlo con sólo un comando, pero no puedo conseguir alfa para hacerlo.

4voto

cbowns Puntos 1960

Creo que calculan el $[x^{100}](1-x)^{100}(1-x^5)^{20}(1-x^{10})^{10}(1-x^{25})^4(1-x^{50})^2(1-x^{100})$, pero ese cálculo parece ser la fuerza bruta.

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