El problema de esta semana está sacado de un libro de la colección Desafíos Matemáticos de RBA, pero no voy a decir qué libro es hasta que no se haya resuelto. Vamos con él:
Tres estudiantes de Matemáticas que iban paseando vieron que un coche cometía una infracción de tráfico. Ninguno de los tres logró memorizar el número de cuatro cifras de la matrícula (algo extraño por cierto), pero cada uno de ellos se dio cuenta de alguna particularidad del número en cuestión. Uno de ellos observó que las dos primeras cifras coincidían, otro vio que las dos últimas también coincidían y otro se dio cuenta de que el número era un cuadrado perfecto (vale, sí, es extraño que sepa que es un cuadrado perfecto sin haber memorizado el número, pero el problema es así). Sabiendo que no era el
, ¿podemos determinar solamente con estos datos el número de la matrícula del coche?
Ánimo, que es sencillo.
¿Te ha gustado la entrada? Puedes invitarme a un café, Gauss te lo agradecerá 😉
Pongo a trabajar al código java y me dice 7744
Ahí les va, ya que soy informático y no matemático he hecho trampa y he escrito una función simple que obtenga el número:
int main() {
for(int i=0; i<100; i+=11) {
for(int j=0; j<100; j+=11) {
if( sqrt(i*100 + j) – (int)sqrt(i*100 + j) == 0)
cout<<(i*100 + j)<<endl;
}
}
}
Y he obtenido que la respuesta es «7744». Como ya dije carezco de una prueba matemática pero bueno ya está.
Yo lo he hecho al revés:
for (int i=0; i<100; i++) {
int j=i*i;
String str = «» + j;
while (str.length()<4) str=»0″+str;
if (str.charAt(3)==str.charAt(2) &&
str.charAt(0)==str.charAt(1))
System.out.println(j);
}
Ruby tambien me devuleve el 7744, asi que como todos coincidimos…
el numero aabb se puede escribir de esta forma:
a*1100 + b*11
Por tanto,
a*1100 + b*11 = c^2, 11*(a*100 + b)=c^2
de aquí,
c = 11*d y (a*100 + b) = 11*d^2
como la parte izquierda de la ultima igualdad solo puede llegar a 909 (y dividiendo por 11) d^2<90. Por lo tanto, probando todas las posibilidades de d (del 1 al 9), vemos que la unica forma es d=8.
d^2=64, d^2*11=704. a=7, b=4
y c = 88.
Luego 88^2 7744.
No he sido mucho más original 🙂
int main() {
for (int i=31; i*i < 10000; ++i) {
int n = i*i;
if (n%10 == (n%100)/10 and n/1000 == (n%1000)/100)
cout << «el numero es: » << i << «, y su cuadrado: » << n << endl;
}
}
—Salida—-
el numero es: 88, y su cuadrado: 7744
pues yo no soy informático y lo he hecho con restos potenciales y sabiendo cómo se descompone un número sabiendo que está en sistema decimal: xxyy=x·1100+y·11=11·(x·100+y)=d^2 como el número tiene que ser un cuadrado, debe ser divisible por 11 al cuadrado, luego (x·100+y) debe ser divisible por 11. Uso los restos potenciales para ver cuando lo es y descubro que un número de la forma x0y es divisible por 11 si x+y es divisible por 11, luego las posibilidades se reducen a los pares (2,9), (3,8),…(7,4), (8,3) y (9,2) De cada par saco el número que les corresponde (x0y) y… Lee más »
Es sencillo, tanto que lo he conseguido hasta yo.
al ser el número XXYY es múltiplo de 11
al ser cuadrado perfecto, es múltiplo de 121
basta con ir multiplicando por todos los cuadrados perfectos hasta que llegamos a 121*64 = 7744
En python es casi ir traduciendo el problema:
# Problema gausianos: «Encontremos la matricula»
# https://gaussianos.com/encontremos-la-matricula/
# Formato abcd
if __name__ == «__main__»:
**for n in range(100):
****matricula = pow(n,2)
****a = matricula / 1000
****b = (matricula – (a*1000)) / 100
****c = (matricula – (a*1000) – (b*100)) / 10
****d = (matricula – (a*1000) – (b*100) – (c*10))
****if a == b and c == d and a != 0 and c != 0:
******print «%d = %d^2» % (matricula,n)
if __name__ == «__main__»:
**for n in range(100):
****matricula = pow(n,2)
****a = matricula / 1000
****b = (matricula – (a*1000)) / 100
****c = (matricula – (a*1000) – (b*100)) / 10
****d = (matricula – (a*1000) – (b*100) – (c*10))
****if a == b and c == d and a != 0 and c != 0:
******print «%d = %d^2» % (matricula,n)
Yo he seguido el método de pirataverde, pero la parte que él dice «la forma x0y es divisible por 11 si x+y=11» la he obtenido del artículo anterior 😉
Eso era lo que pretendía: la aplicación del artículo de ayer a este problema.
Muy bien chicos 🙂
88^2 = 7744
A mi se me ocurrió hacerlo con congruencias:
Por tanto
Y como
sólo tenemos que probar para
y para
obtenemos 
for d2 in range(10):
for d1 in range(10):
n=1100*d2+11*d1
s=int(sqrt(n))
if n and s*s==n:
print n
Ahora solo falta que publiqueis el nombre del libro 🙂
Saludos
Número => XXYY => Y+10Y+100X+1000X = R²
=> 11*(Y+100X)=R²
Donde R/11 pertenece a los naturales y 32<R( 33, 44, 55, 66, 77, 88, 99 )
Se verfica para 88. 88²= 7744 (XXYY)
Saludos
Número => XXYY => Y+10Y+100X+1000X = R²
=> 11*(Y+100X)=R²
Donde R/11 pertenece a los naturales y 32<R<99
Posibles valores para R =( 33, 44, 55, 66, 77, 88, 99 )
Se verfica para 88. 88²= 7744 (XXYY)
Lo que escribí arriba quedo mal, mis disculpas.
Saludos
Yo lo he hecho parecido a duhu, o sea, intuitivamente (no digo sin trampas por no ofender a los informáticos).
Un número xxyy es siempre igual a 11*x0y(XceroY). Como la matrícula es un cuadrado perfecto, x0y tiene que ser a su vez 11*otro cuadrado.
El único número de tres cifras x0y que puedes obtener multiplicando 11 por cuadrados perfectos es 704 (11*64), así que la matrícula debe ser 704*11=7744
(My hobby de ir dividiendo matrículas por la calle ayuda mucho en esto)
Cierto, falta el libro:
Álgebra recreativa de Yakov Perelman.
¿Alguna relación con el excéntrico Grigori Perelman?
Yakov y Grigori Perelman tienen el mismo apellido y ambos nacieron en Rusia, pero no son parientes. Sin embargo existe una conexión entre ellos: Cuando Grigoli era un niño su padre le regaló un libro escrito por Yakov, titulado «Física recreativa», cuya lectura inspiró a Grigoli su amor por la matemática.
tengo uno de esos libros, editorial Mir, URSS
bueno ahi tienen casi toda las soluciones k se me pueden ocurrir pero alcanse a dar
una solucion que todavia no estaba en suma de senos y cosenos puedes verla si quieren
Otra forma de ver el problema, también en el magnífico Python:
n=1
while n<99:
cifra=n*n
cifra1=int(cifra/1000)
cifra2=int(cifra/100)-cifra1*10
cifra3=int(cifra/10)-cifra1*100-cifra2*10
cifra4=cifra-cifra1*1000-cifra2*100-cifra3*10
n+=1
if cifra1==cifra2 and cifra3==cifra4:
print cifra
A partir del while todo sigue la misma indentación, salvo la última línea que, obviamente, va dentro del if.
A mi me dio 7744, pero me puse a buscarlo con la calculadora del celular mientras estaba sentado en el inodoro haciendo mis necesidades..
Primero me fije los limites, o sea entre 32 y 99. Luego me fui fijando los q su potencia tendrian los dos primeros numeros iguales, el primero fue el 34 y fui sumando 11, dsps 9, hasta 5, y dsps solo un poco al azar hasta q lo logre.
Saludos!
Gabriel
Mi método sin duda es el más rápido. Me sé de memoria los cuadrados de los naturales entre 1 y 100 (deformación profesional de calculista frustrado), así que «recordé» que 7744 es el único cuadrado perfecto de esa forma.
Saludos!
puede ser 3112
El tema es viejo, pero me llamo la atención así que me puse a pensar un poquito y veo que la base de mi razonamiento es igual a quienes llegaron al múltiplo de 11, pero tengo una variante.
El número tiene la forma
y además debe verificar que
, es decir que
, entonces se tiene que:
esto es el cuadrado es múltiplo de 11, por lo tanto
, cambiando
por los números del 1 al 9 y elevando al cuadrado el resultado del producto vemos que
.