Solución del problema de Pintia——7-28 ¿A quién le importa quién llama a papá?

7-28 ¿A quién le importa quién me llame papá?

Titulo original:

"A quién le importa quién me llama papá" es una canción de rap divertida en Internet, que se origina en el juego de entretenimiento que se juega en la mesa de vino del noreste. Ahora aumentemos la dificultad de este juego y usemos más coeficiente intelectual.
Supongamos que las dos personas del juego son A y B. Después de que comienza el juego, las dos personas informan dos números enteros N**A​ y N**B​ al mismo tiempo . Los criterios para determinar quién es el padre son los siguientes:

  • Suma los dígitos de dos números enteros para obtener dos sumas S**A y S**B . Si N**A es exactamente un múltiplo entero de S**B , entonces A es el padre; si N**B es exactamente un múltiplo entero de S**A , entonces B es el padre;
  • Si dos personas cumplen o no las condiciones de juicio anteriores al mismo tiempo, el que tiene el número original más alto es el padre.
    Esta pregunta le pide que escriba un programa de árbitro automático para determinar quién es el padre.

Formato de entrada:

La primera línea de entrada da un número entero positivo N (≤100), que es el número de juegos. Las siguientes N líneas, cada línea proporciona un par de números enteros positivos que no exceden los 9 dígitos, correspondientes a los números originales dados por A y B. La pregunta asegura que los dos números no son iguales.

Formato de salida:

APara cada ronda de juego, indica los jugadores que ganaron el título de "Papá" de forma consecutiva B.

.

Ideas para resolver problemas:

  1. Importe readlineel módulo y cree un objeto de interfaz: Igual que la pregunta anterior, readlineintroduzca el módulo y use createInterfaceel método para crear un objeto de interfaz rl. Este objeto establece el flujo de entrada en entrada estándar.
  2. Leer entrada y almacenar: igual que en la pregunta anterior, al escuchar 'line'eventos, almacene la entrada en una matriz buf.
  3. splitDeconstruya la asignación para obtener Na, Nb, Sa y Sb: use el método para dividir el i-ésimo elemento (es decir, el i-ésimo grupo de entrada) por espacios, y use mapel método para convertir cada elemento en un número y almacenarlo en una variable nums; almacenar el nums[0]y nums[1]respectivamente en En la variable Nasuma , la suma Nbde cada dígito también se almacena en la variable.SaSb
  4. Determine el tamaño de Na y Nb: primero determine si Na es igual a Nb y regrese directamente si es igual; de lo contrario, continúe realizando los pasos posteriores.
  5. Resultados de salida basados ​​en condiciones: utilice if...else if...elsepalabras clave de declaración para juzgar las siguientes condiciones en secuencia y generar los resultados:
    • Si Na puede dividir a Sb y Nb puede dividir a Sa, se generará la letra mayor "A" o "B", que está determinada por la relación entre Na y Nb.
    • Si Na puede dividir a Sb pero Nb no puede dividir a Sa, entonces genera "A".
    • Si Na no puede dividir a Sb pero Nb puede dividir a Sa, entonces genere "B".
    • Si ni Na ni Nb satisfacen las condiciones 1, 2 y 3, la salida "A" o "B" se determinará en función de la relación entre Na y Nb.

.

Código JavaScript (nodo):

const r = require("readline");
const rl = r.createInterface({
    
    
    input: process.stdin
});
let buf = [];
rl.on('line', (input) => buf.push(input));
rl.on('close', () => {
    
    
    let n = parseInt(buf[0])
    if (n > 100) {
    
    
        return
    }
    for (let i = 1; i <= n; i++) {
    
    
        let nums = buf[i].split(" ")
        let Na = parseInt(nums[0])
        let Nb = parseInt(nums[1])
        if (Na == Nb) {
    
    
            return
        }

        let Sa = 0, Sb = 0;
        for (let i of nums[0]) {
    
    
            Sa += parseInt(i);
        }
        for (let i of nums[1]) {
    
    
            Sb += parseInt(i);
        }

        if ((Na % Sb === 0) && (Nb % Sa === 0)) {
    
    
            console.log(Na > Nb ? "A" : "B");
        } else if (Na % Sb === 0) {
    
    
            console.log("A");
        } else if (Nb % Sa === 0) {
    
    
            console.log("B");
        } else {
    
    
            console.log(Na > Nb ? "A" : "B");
        }


    }

});

.

Análisis de complejidad:

Complejidad del tiempo: O (n)
Complejidad espacial: O (n)

Supongo que te gusta

Origin blog.csdn.net/Mredust/article/details/133520135
Recomendado
Clasificación