6 votos

Un rompecabezas de números matemáticos

Tenemos estos dígitos : $1,2,3,4,5,6,7,8,9$ . Usando estos dígitos, tenemos que hacer dos números tales que su producto debe ser lo más grande posible. Tenemos que utilizar todos los dígitos una sola vez.

Lo hice $97531\times 8642$ y consiguió $842862902$

5voto

Tengo uno más grande: $87531\times 9642=843973902$

Lo que hice fue empezar con dos espacios en blanco. Luego empecé a poner los dígitos mayores uno por uno, manteniendo la suma de dígitos de ambos números algo equilibrada. Los dígitos mayores tienen más preferencia, poniéndolos en un valor de posición mayor.

4voto

runeh Puntos 1304

Tenga en cuenta que si $a\gt b$ y $c\gt 0$ entonces $(10a+b)c\gt (10b+a)c$ - por lo que podemos organizar los dos números de manera que los dígitos más grandes estén en los lugares de mayor significación.

Si los dos números que estamos multiplicando tienen $m$ y $n$ dígitos su producto es menor que $10^m\times 10^n=10^{m+n}=10^9$ por lo que el producto debe tener como máximo nueve dígitos, y dado que nueve dígitos es posible, el mayor producto tendrá nueve dígitos.

Trabaja hacia abajo desde los dígitos más significativos.

$9\times 8=72$

Ahora colocamos $7$ y como $7\times 9\gt 7\times 8$ elegimos $9\times 87$ .

Siguiente $6$ tiene que ser asignado. Ocupa un lugar más significativo (el segundo) si tenemos $96\times 87$ que $9\times 876$ donde es tercero - comprobar $8352\gt 7884$ .

Ahora $5$ va en el lugar más significativo que pueda, y como ambos son iguales, va donde se multiplica por el número más alto, es decir $96\times 875$

Continuando obtenemos $9642\times87531=843,973,902$

@imakesmalltalk llegó primero, pero esta explicación era demasiado larga para un comentario.

2voto

nnevala Puntos 1690

$87531 \cdot 9642 = 843973902$

Podría confirmar Respuesta de imakesmalltalk por un programa de JavaScript.

Instalar node.js , ejecutar node the-saved-script-name.js y la última línea de la salida del programa debe ser el mayor producto posible.

El programa debería funcionar razonablemente rápido, necesita 3,936 segundos en mi PC.

/* Create all given permutations of an array
 * @author Oriol <http://stackoverflow.com/users/1529630/oriol
 * @link http://stackoverflow.com/a/11509565/603003
 * @license CC BY-SA 3.0 with attribution required
 */
function permute(input) {
    var permArr = [],
    usedChars = [];
    function main(){
        var i, ch;
        for (i = 0; i < input.length; i++) {
            ch = input.splice(i, 1)[0];
            usedChars.push(ch);
            if (input.length == 0) {
                permArr.push(usedChars.slice());
            }
            main();
            input.splice(i, 0, ch);
            usedChars.pop();
        }
        return permArr;
    }
    return main();
}

var numbers = [1,2,3,4,5,6,7,8,9];
var maxProduct = 0;

permute(numbers).forEach(function (permutation) {
    for (var i=1; i<9; i++) {
        var factor1 = parseInt(permutation.slice(0, i).join(""), 10);
        var factor2 = parseInt(permutation.slice(i, permutation.length).join(""), 10);
        var product = factor1 * factor2;
        if (product > maxProduct) {
            maxProduct = product;
            console.log("New maxProduct: " + maxProduct + " (factor1: " + factor1 + ", factor2: " + factor2 + ")");
        }
    }
});

La salida:

...
la última línea sigue:
Nuevo maxProducto: 843973902 (factor1: 87531, factor2: 9642)

0voto

askuyue Puntos 134

Lo hice $963×875421 = 843030423 > 97531×8642 = 842862902$ .

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