Problema con distancia de números

Me dan la siguiente definición: Dado z entero diremos que tal numero es rojo si la suma de sus dígitos es múltiplo de 5.
Encuentra la mínima distancia entre dos números rojos distintos.

No se me ocurre nada, ya hice listas de números pero no veo algún "patrón" a seguir

Gracias!!!

1 respuesta

Respuesta
1

Con una lista a mano a lo mejor no se puede llegar muy lejos. Este programa hace los cálculos y muestra los mínimos y empates que se producen

program Project1;{$mode objfpc}{$H+}uses  {$IFDEF UNIX}{$IFDEF UseCThreads}  cthreads,  {$ENDIF}{$ENDIF}  Classes  { you can add units after this };var   n, m, suma, anterior, mini:integer;begin  anterior:=0; mini:=maxint;  for n:=1 to 1000000 do    begin      m:=n; suma:=0;      repeat        suma:=suma+m mod 10;        m:=m div 10;      until m=0;      if suma mod 5 = 0 then        begin          if n-anterior <= mini then            begin              writeln(anterior:10,n:10,n-anterior:3);              mini:=n-anterior;            end;          anterior:=n;        end;    end;  writeln('FIN');  readln;end. 

No sé si pondré todo el resultado podría ser muy pesado porque está página quita los espacios blancos que sobran al copiar y tienes que volver a ponerlos, es horrible.

 0 5 5 14 19 5 19 23 4 28 32 4 37 41 4 46 50 4 69 73 4 78 82 4 87 91 4 109 113 4 118 122 4 127 131 4 136 140 4 159 163 4 168 172 4 177 181 4 186 190 4 208 212 4 217 221 4 226 230 4 249 253 4 258 262 4 267 271 4 276 280 4 299 302 3 398 401 3 497 500 3 799 802 3 898 901 3 1199 1202 3 1298 1301 3 1397 1400 3 1699 1702 3 1798 1801 3 1897 1900 3 2099 2102 3 2198 2201 3 2297 2300 3 2599 2602 3 2698 2701 3 2797 2800 3 3098 3101 3 3197 3200 3 3499 3502 3 3598 3601 3 3697 3700 3 3999 4001 2 4998 5000 2 8999 9001 2 12999 13001 2 13998 14000 2 17999 18001 2 18998 19000 2 21999 22001 2 22998 23000 2 26999 27001 2 27998 28000 2 30999 31001 2 31998 32000 2 35999 36001 2 36998 37000 2 40998 41000 2 44999 45001 2 45998 46000 2 49999 50000 1 139999 140000 1 189999 190000 1 229999 230000 1 279999 280000 1 319999 320000 1 369999 370000 1 409999 410000 1 459999 460000 1 549999 550000 1 639999 640000 1 689999 690000 1 729999 730000 1 779999 780000 1 819999 820000 1 869999 870000 1 909999 910000 1 959999 960000 1FIN

Bueno pues todo el estudio se puede hacer observando

Si solo variamos la unidad entre dos números rojos es obvio que la mínima distancia será 5

Vemos que la primera vez que se produce una distancia 4 es entre el 19 y 23

La primera vez que disminuye a 3 es entre 299 y 302

Disminuye a 2 por primera vez entre 3999 y 4001

Finalmente se hace 1 entre 49999 y 50000

Luego la distancia mínima es 1, que es mínima de las posibles.

Y la forma de construir dos números rojos con distancia 1 es tomar un número que acabe con cuatro ceros (ojo, cuatro ceros, cinco no sirven) y cuyas cifras sumen un múltiplo de 5.

Entonces ese número y el anterior son rojos y su distancia es 1.

En efecto, el número anterior acabará con cuatro nueves y la cifra quinta por el final será uno menos que la del posterior (ya que no era cero) y las otras cifras de la izquierda serán iguales.

Con esto si las cifras del posterior sumaban 5n las del anterior sumarán

5n-1+36 = 5n+35 =5(n+7)

Por lo cual es un número rojo.

Sobre la distancia máxima es 9 que ya se da entre 5 y 14.

Y eso es todo.

Muchas gracias!!!, solo que cuando escribes:
"Con esto si las cifras del posterior sumaban 5n las del anterior sumarán

5n-1+36 = 5n+35 =5(n+7)
por lo cual es un número rojo."

porque pones el 36? es porque eso se cumple a partir del 36?

Además, tu dices que la distancia mínima es 1, porque pudiste hacer un programa que te llevara hasta eso, pero como hubiera sido si no hubieras tenido el programa? que tal si llegas hasta el mínimo 2? habrá algo que te indique que estarías mal? no se puede hallar algo asi como un "termino general", como en las sucesiones?

Lo siento por tantas preguntas, espero no molestarte :)

Me parece que no salio bien la parte del programa y de la lista. Yo solo veo una linea en cada una cuando eran muchas lineas las que tendrán que aparecer. ¿Es eso cierto? Si no lo ves con todas las líneas podría intentar volver a insertarlos, lo único que lleva mucho tiempo el tema de alinear columnas, las dejaría sin alinear

Los programas ayudan, te pueden resolver un problema o ayudarte o ver por donde van los tiros. Son el complemento perfecto para los matemáticos. En este caso me dio la solución y a través de ella se descubre el método para encontrar cualquiera

Te decía que consiste en tomar un un número que acabe con 4 ceros pero no con 5 y tal que la suma se sus cifras sea múltiplo de 5, por ejemplo

820000

Es un número rojo porque sus cifras sumas 10

Y el numero anterior 819999 es múltiplo de 5 porque la suma de las cifras es 36 de los cuatro nueves que aparecen (y eso es obligatorio que aparezcan por el número que hemos elegido terminaba con 4 ceros) y la suma de las otras cifras es la misma de antes menos 1.

Entonces la suma de las cifras es

36 + 10 - 1 = 35 + 10

Es decir, la suma de las cifras es lo que sumaban las originales + 35 luego si las originales sumaban un múltiplo de 5 las del número anterior también suman un múltiplo de 5.

Prueba con otro

4830000 Suma 15

4829999 Suma 14 + 36 = 15 + 35 = 50

Luego si la única duda que tenías era el número 36 es de la suma de los 4 nueves.

Voy a poner de todas forma el programa y resultados, no me gusta que no se vea bien.

program Project1;
{$mode objfpc}{$H+}
uses
   {$IFDEF UNIX}{$IFDEF UseCThreads}
   cthreads,
   {$ENDIF}{$ENDIF}
 Classes
   { you can add units after this };
var n, m, suma, anterior, mini:integer;
begin
  anterior:=0; mini:=maxint;
  for n:=1 to 1000000 do
    begin
      m:=n; suma:=0;
      repeat
      suma:=suma+m mod 10;
      m:=m div 10;
      until m=0;
      if suma mod 5 = 0 then
        begin
          if n-anterior <= mini then
            begin
              writeln(anterior:10,n:10,n-anterior:3);
              mini:=n-anterior;
            end;
          anterior:=n;
        end;
    end;
  writeln('FIN');
  readln;
end. 

Y los resultados

 0 5 5
 14 19 5
 19 23 4
 28 32 4
 37 41 4
 46 50 4
 69 73 4
 78 82 4
 87 91 4
 109 113 4
 118 122 4
 127 131 4
 136 140 4
 159 163 4
 168 172 4
 177 181 4
 186 190 4
 208 212 4
 217 221 4
 226 230 4
 249 253 4
 258 262 4
 267 271 4
 276 280 4
 299 302 3
 398 401 3
 497 500 3
 799 802 3
 898 901 3
1199 1202 3
1298 1301 3
1397 1400 3
1699 1702 3
1798 1801 3
1897 1900 3
2099 2102 3
2198 2201 3
2297 2300 3
2599 2602 3
2698 2701 3
2797 2800 3
3098 3101 3
3197 3200 3
3499 3502 3
3598 3601 3
3697 3700 3
3999 4001 2
4998 5000 2
8999 9001 2
12999 13001 2
13998 14000 2
17999 18001 2
18998 19000 2
21999 22001 2
22998 23000 2
26999 27001 2
27998 28000 2
30999 31001 2
31998 32000 2
35999 36001 2
36998 37000 2
40998 41000 2
44999 45001 2
45998 46000 2
49999 50000 1
139999 140000 1
189999 190000 1
229999 230000 1
279999 280000 1
319999 320000 1
369999 370000 1
409999 410000 1
459999 460000 1
549999 550000 1
639999 640000 1
689999 690000 1
729999 730000 1
779999 780000 1
819999 820000 1
869999 870000 1
909999 910000 1
959999 960000 1
FIN

Qué asquerosos son los de esta página quitando los espacios de alineación pero ya los puse una vez y no los vuelvo a poner.

Y eso es todo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas