8 votos

¿Cómo se puede llegar a una solución codiciosa y probarla?

Digamos que tenemos una función $S(x)$ que da la suma de los dígitos del número $x$ . Así que $S(452)$ sería $4 + 5 + 2 = 11$ .

Dado un número $x$ encuentra dos números enteros $a, b$ tal que $0 <= a, b <= x$ y $a + b = x$ . El objetivo es maximizar $S(a) + S(b)$ . Me encontré con esta pregunta en una web de programación y la respuesta es elegir con avidez un número $a$ que contiene todos los $9$ de tal manera que sea menor que $x$ y el otro número sería $x - a$ .

Si $x = 452$ entonces $S(99) + S(353) = 29$ que es el máximo posible. ¿Cómo puedo llegar a esto y demostrar lo mismo?

19voto

Ya Basha Puntos 130

Demuestra las dos siguientes afirmaciones (supongo que serían lemas):

  1. Al añadir $a+b$ como se aprende en la escuela, si no se lleva, entonces $S(a+b)=S(a)+S(b)$

  2. Por cada carga que se obtiene al sumar $a+b$ la suma $S(a)+S(b)$ aumenta en $9$ .

Juntos significan que quieres tener el mayor número de cargas posible. El algoritmo codicioso que describes te da un acarreo en cada columna (excepto en la columna del 1, que es imposible de todos modos) y por lo tanto te da el máximo.

0voto

Hagen von Eitzen Puntos 171160

Al detallar el proceso en lulu El comentario de la señora:

Dado que sólo hay un número finito de opciones para $a,b$ debe existir un óptimo. Consideremos todos los pares $(a,b)$ con $a+b=n$ y $S(a)+S(b)=\max$ y $a\le b$ . $a=\overline{a_1a_2\ldots a_d}$ y $b=\overline{b_1b_2\ldots b_d}$ (con $b_1>0$ , pero posiblemente $a_1=0$ ). Entre todos estos $(a,b)$ elija uno que maximice $S(a)$ .

Supongamos que $a_k<9$ para algunos $k>1$ .

  • Si $b_k=0$ entonces debe haber una (máxima) $j<k$ con $b_j>0$ porque, de lo contrario, tendríamos $b<a$ . Si sustituimos $a_k$ con $a_k+1$ , $b_j$ con $b_j-1$ y $b_i$ con $9$ para $j<i\le k$ con los números $a',b'$ obtenido de esta manera, tenemos $a'+b'=a+b=n$ pero $S(a')+S(b')=S(a)+S(b)+9(k-j)$ , constriñendo la maximalidad de $S(a)+S(b)$ .

  • Si $b_k>0$ podríamos aumentar $a_k$ y disminuir $b_k$ por uno, logrando así $a'+b'=a+b=n$ , $S(a')+S(b')=S(a)+S(b)$ pero $S(a')=S(a)+1$ contradiciendo la maximalidad de $S(a)$ .

Concluimos que existe una maximización $a$ con $a\le b$ y $a_2=\ldots=a_d=9$ .

¿Qué podemos ganar si abandonamos la condición $a\le b$ ?

  • Si $a_1+b_1\ge 9$ podemos dejar que $a_1'=9$ y $b_1'=a_1+b_1-9$ , lo que hace que $a'$ consisten únicamente en $9$ y aparentemente el mayor número $\le n$ de esta forma

  • Si $a_1+b_1<9$ podemos dejar que $a_1'=0$ y $b_1'=a_1+b_1$ , lo que hace que $a'$ consisten únicamente en $9$ y aparentemente el mayor número $\le n$ de esta forma

En resumen, el $a$ (y sus asociados $b$ ) encontrado por el método codicioso está entre los maximizadores.

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