¿Y si hacemos bolsas de 7 canicas?

Por Clara Grima, el 5 septiembre, 2012. Categoría(s): Tareas ✎ 7

—No, Sal. Es mejor hacerlas de 6, como nos dijo Mati, ¿te acuerdas?

—No, Ven, lo que dijo Mati es que si tenías 6 canicas era más fácil hacer subgrupos que si tenías  5, pero si tenemos 46 canicas no es más fácil con 6 —argumentó el gafotas —Además, nos sobrarían canicas.

—¿Cómo lo sabes? —preguntó el pequeño.

—Porque si divides 46 entre 6, te sobran 4 —respondió Sal.

—¿Es porque 6 y 46 son primos entre sí?

—No, Ven —añadió Sal —No son primos porque los dos se pueden dividir por 2…

—Bueno, qué bien —Mati acababa de llegar —Veo que seguís hablando de números primos, ¿no?

—¡Hola, Mati! —saludó Ven.

—No exactamente, Mati —dijo Sal mientras se ponía de puntillas para dar un beso a Mati —Hablábamos de números primos entre sí. Bueno, en realidad, le explicaba a Ven que no podemos hacer las bolsas con 6 canicas porque tenemos 46 y nos sobrarían canicas.

—Estamos preparando un mercadillo para el domingo, Mati —empezó a contar Ven muy animado—Vamos a vender nuestras canicas, tenemos 46. Mamá nos ha dado bolsitas para que las preparemos.

—Entiendo… -intervino Mati —Esto es un problema de divisibilidad

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

—¿De qué? —preguntó el pequeño ven arrugando la nariz.

—De divisibilidad —respondió ella —Tenéis que saber por qué números es divisible 46 para poder hacer las bolsitas sin que sobren canicas.

—Y eso, ¿cómo podemos saberlo? —preguntó Sal intrigado.

—Os voy a enseñar algunas reglas de divisibilidad, ¿queréis?

—¡Sí! —dijeron los dos niños.

—Cualquier número es divisible por 1, así que podríais hacer 46 bolsas de 1 canica…

—¡Toma, claro! —interrumpió Ven —Pero es un rollo…

—Bueno, pues vamos a seguir entonces -Mati le guiñó un ojo —Todos los números pares son divisibles por 2.

—¡46 es par! —gritó Ven.

—Sí, podemos hacer 23 bolsas de 2 canicas —dijo Sal —Pero con 2 canicas, también es muy poca cosa…

—¿Seguimos? —les preguntó Mati —Un número es divisible por 3 si la suma de sus cifras nos da un múltiplo de 3.

—¿46? 4 más 6 es 10…—murmuraba Sal —No, no es divisible porque 10 no es múltiplo de 3.

—¿Cómo lo sabes, Sal? —preguntó su hermano.

—Pues porque si divides 10 entre 3, te sobran —contestó el gafotas.

—Muy bien, chicos —continuó Mati — Ahora, un número es divisible por 4, si sus dos últimas cifras son ceros o múltiplo de 4.

—Las dos últimas cifras de 46 son 46, Mati —dijo  Sal —Esta regla es un poco tonta, ¿no?

—Bueno, en este caso, puede —dijo ella —Pero gracias a esa regla sabemos que 5874516 es divisible por 4.

—¡Toma, toma, toma! —exclamó Ven.

—Pues 46 no es divisible por 4 —siguió Sal —Porque 11 por 4 es 44 , así que nos sobrarían 2…

—Efectivamente —continuó  Mati —Un número es divisible por 5, si termina en cero o cinco.

—¡Qué fácil! —dijo Ven —No podemos hacer bolsas de 5 canicas.

—No —añadió Sal —Si no queremos que sobren canicas, no…

—Es el turno del 6 —siguió la pelirroja —Un número es divisible por 6, si es divisible por 2 y por 3.

—Pues 46 no es divisible por 6 porque no es divisible por 3 —dijo Ven satisfecho.

—Eso ya te lo dije yo antes… —intervino Sal.

—Vamos con el 7—propuso Mati —Ésta es una de mis reglas de divisibilidad favorita.

—¿Por qué? —preguntaron los dos.

—Ya veréis —anunció la pelirroja con misterio mientras sacaba su libreta.

 

—¿Qué es eso? —preguntó Ven divertido —¡Es un grafo!

—Sí —dijo Mati —Un grafo que nos va a ayudar a saber si un número es divisible por 7 o no.

—¿¿Cómo?? —Sal estaba cada vez más intrigado.

—Os lo cuento —empezó a decir Mati —Salimos siempre desde el 0, es nuestra posición inicial. Desde allí recorremos tantas flechas azules como indique la primera cifra de nuestro número…

—¡El 4! —dijo Ven —La primera cifra de 46 es el 4.

—Pues empezando en 0 —siguió Mati —Recorremos  4 flechas azules, ¿dónde llegamos?

—Al 4 —respondió Sal.

—Ahora recorremos una flecha roja —les dijo —Y llegamos a 5.

 

—¿Y ahora? —preguntó el pequeño.

—Ahora, saliendo desde el 5, hacemos lo mismo —les contó —Seguimos tantas flechas azules como indique la segunda cifra, que en nuestro caso es 6.

—Llegamos al 4 otra vez —dijo Sal —¿Ahora flecha roja?

—No, ya no. porque ésta es la última cifra —dijo Mati —Ya hemos acabado, 4 es el resto de dividir 46 por 7, entonces 46 no es divisible por 7.

—¡Toma, toma, toma! ¡Cómo mola! —exclamó Ven.

—¿Y sirve para cualquier número? —preguntó Sal.

—Sí —respondió la gafotas —Siempre. Comienzas en el cero, tantas flechas azules como la primera cifra y flecha roja. Desde donde estás, tantas flechas rojas como la segunda cifra y flecha roja. Y así con todas, excepto con la última cifra, que no usamos la flecha roja después de los azules.

—¡Es chulísimo! —Ven estaba alucinado. Gauss parecía poco preocupado con el asunto.

—Y para el 8, ¿también hay un grafo? —preguntó Sal.

—No —respondió Mati —Un número es divisible por 8, si sus tres últimas cifras son ceros o forman un múltiplo de 8.

—Pero 46 sólo tiene 2 cifras… —afirmó Ven.

—Lo miramos como 046 —les dijo.

—4 más 6 es 10… -murmuraba Sal —No, no es divisible por 8.

—¿Qué pasa con el 9? —quiso saber Ven.

Un número es divisible por 9, si la suma de sus dígitos nos da múltiplo de 9 —les dijo Mati.

—Pues, vaya, tampoco —se quejó Ven.

Para que sea divisible por 10, debe terminar en 0 —continuó Mati.

—Tampoco —refunfuñó el pequeño.

—Bueno, Ven —intervino Sal —Las hacemos de 7 y las 4 que sobran, nos la quedamos de recuerdo.

—¡Hecho! —aceptó Ven —¡Somos los más mejores!

 

Nota de las autoras: El método para conocer el resto al dividir por 7 un número natural lo encontramos aquí y nos encantó 🙂 En su blog, Gaussianos nos cuenta cómo hacer ése grafo para cualquier número natural.

 

 

 



7 Comentarios

  1. No he entendido nada, no comprendo como puede ser 46 divisible por ninngún numero como no sea por 23 , en fin . debo ser muy torpe a mis años , pues cuando era joven en la escuela industrial los profes se quedaban con la boca abierta cuando les decía el resultado de cualquier suma, resta ,multiplicación,o odivisión por muchos números que se tubieran , algo que ni yo mismo me pude nunca explicar pues decía lo primero que me llegaba a la cabeza sin pensar mucho.

    Clica sobre mi nombre

  2. Curioso grafo para obtener los múltiplos de 7, no conocía de su existencia.

    Este planteamiento, a mi ver, es más idóneo para plantear la teoría del mínimo común múltiplo, aunque faltaría motivación para encontrarlo (añadiendo un par de líneas al problema buscando optimización)… ya que tocas factorización….

    Ah, se me olvidaba… estos problemas de divisibilidad, la forma más «visual» de resolverlos es factorizando y punto. ¿Qué hay 72 canicas por ejemplo? 72 = 2^3 * 3^2 = 2 * 2 * 2 * 3 * 3, de ahí se elige cualquier número de términos para una parte y los no elegidos para la otra (diviendo y divisor) por ejemplo podriamos hacer 6 (2 * 3) bolsas de 12 (2 * 2 * 3) bolas, 4 (2 * 2) bolsas de 18 (2 * 3 * 3) bolas, 3 bolsas de 24 (2 * 2 * 2 *3) bolas…

    ¡Un saludo!

  3. Larrosa, ¿tú no eras escritor? En fin, debería de caerte la cara de vergüenza de escribir «tubiera», que te recuerdo viene de tener y no del sustantivo tubo (conducto).

  4. Curioso problema Alberto, te traigo una solución recurrente con backtracking.

    Obviamente no es la mejor, ya que en el supuesto problema de permutas sin repeticiones conocemos al menos 2 objetivos fijos que reducen en 2 componentes la complejidad del problema por naturaleza el único múltiplo de de 10 será 0, y el único múltiplo de 5 será 5 al descartar el 10, luego nos encontramos con las posiciones 5 y 10 cubiertas por el 5 y el 0 respectivamente, luego el problema se podría acotar a «12346789» con todas las condiciones anteriores.

    El resultado es una única solución: 3816547290.

    void solve_r(char *input, int i, const int n, char *outputs[], int *j, const int m)
    {
    if (i == n – 1)
    {
    bool condstatus = true;
    int mem[10];

    for (int k = 0; k < n; k++)
    mem[k] = input[k] – '0';

    for (int k = 0; k < n && condstatus; k++)
    {

    long long acc = 0;
    for (int l = 0; l <= k; l++)
    {
    acc += pow((double)10, (k – l)) * mem[l];
    }
    condstatus = acc % (k + 1) == 0;
    }

    if (condstatus && *j < m)
    {
    strcpy(outputs[*j], input);
    (*j)++;
    }
    }
    else
    {
    for (int k = i; k < n; k++)
    {
    char tmp;

    tmp = input[i]; input[i] = input[k]; input[k] = tmp;
    solve_r(input, i + 1, n, outputs, j, m);
    tmp = input[i]; input[i] = input[k]; input[k] = tmp;
    }
    }
    }

    void solve(char *input, const int n, char *outputs[], int *max_items)
    {
    int itms = *max_items;
    *max_items = 0;
    solve_r(input, 0, n, outputs, max_items, itms);
    }

    int main(int argc, char** argv)
    {
    const int strlen = 10;
    char a[strlen + 1] = "0123456789", **o;
    int max_items = 16;

    o = (char **) malloc(sizeof(char *) * max_items);
    for (int i = 0; i < max_items; i++)
    o[i] = (char *)malloc(sizeof(char) * strlen + 1);

    solve(a, 10, o, &max_items);

    for (int i = 0; i < max_items; i++)
    printf("Solution %d: %sn", i + 1, o[i]);

    for (int i = 0; i < max_items; i++)
    free(o[i]);
    free(o);

    return 0;
    }

  5. Condiciones de optimización para el problema de Alberto.
    1 – 1,3,7,9 # cualquier impar, los pares tienen sus huecos reservados (0 preasignado a 10 y 2,4,6,8 se asignarán a las posiciones 2,4,6,8 cumpliendo las condiciones)
    2 – 2,4,6,8 # cualquier par
    3 – (v[1] + v[2] + x) % 3 == 0, x = número que sumado con los anteriores de múltiplo de 3
    4 – x % 2 == : 2, 6 // x % 2 == 0 : 0, 4, 8, si el anterior número (x) es par las opciones aquí son 2 y 6, en caso contrario son 0, 4 y 8
    5 – 5
    6 – 2,4,6,8 ^ (v[1] + v[2] + x + v[4] + 5 + y) % 3 == 0, un numero par que cumpla la ecuación de múltiplo de 3
    7 – (v[1] * 10e6 + v[2] * 10e5 + x * 10e4 + v[4] * 10e3 + 500 + y * 10 + z) % 7 == 0, el 7 tiene su ley de grafos que explican aquí, se podría implementar o simplemente buscar el módulo
    8 – z % 2 == 0 ^ (v[8] C { 0, 8, 4 } | z % 2 == 1 ^ (v[8] C { 2, 6 } , si el elemento anterior es par las opciones aquí son 0, 4, 8 y en caso contrario 2 y 6 (condición opuesta a 4)
    9 – sumatorio v[1-8] + w y que sea multiplo de 3 y el resultado del sumatorio se vuelven a sumar sus cifras y que sea multiplo de 3.
    10- 0

Deja un comentario

Por Clara Grima, publicado el 5 septiembre, 2012
Categoría(s): Tareas