Imagine un número de 3 dígitos, por ejemplo 110. Invierta y obtendrá (0) 11. Cuando suma los dos, obtiene 121, que es 11 al cuadrado. ¿Qué otros números de 3 dígitos resultan en un número cuadrado cuando se aplica esta regla?

Escribí un programa rápido de Java para ello.

  import java.lang.Math;

 clase pública HelloWorld
 {
   public static void main (String [] args)
   {
 	 para (int x = 100; x <= 999; x ++)
     {
    	 int flipedX = flip (x);
      
      	 int sum = x + flipedX;
   
      	 if (isSquare (suma))
           System.out.println (x + "+" + flip (x) + "=" + 
			 (int) Math.sqrt (suma) + "^ 2");
     }
   }
  
   isSquare booleano estático (número int)
   {
     sqrt doble = Math.sqrt (número);
    
     return sqrt == (int) sqrt;
   }
  
   flip int estático (int x)
   {
 	 retorno 100 * (x% 10) + (x / 10% 10) * 10 + x / 100; 
   }
 }

Puede ejecutarlo en Java Online IDE (javac 1.8.0_131)

Salida:

110: 110 + 011 = 121 = 11 ^ 2

143: 143 + 341 = 484 = 22 ^ 2

164: 164 + 461 = 625 = 25 ^ 2

198: 198 + 891 = 1089 = 33 ^ 2

242: 242 + 242 = 484 = 22 ^ 2

263: 263 + 362 = 625 = 25 ^ 2

297: 297 + 792 = 1089 = 33 ^ 2

341: 341 + 143 = 484 = 22 ^ 2

362: 362 + 263 = 625 = 25 ^ 2

396: 396 + 693 = 1089 = 33 ^ 2

440: 440 + 044 = 484 = 22 ^ 2

461: 461 + 164 = 625 = 25 ^ 2

495: 495 + 594 = 1089 = 33 ^ 2

560: 560 + 065 = 625 = 25 ^ 2

594: 594 + 495 = 1089 = 33 ^ 2

693: 693 + 396 = 1089 = 33 ^ 2

792: 792 + 297 = 1089 = 33 ^ 2

891: 891 + 198 = 1089 = 33 ^ 2

990: 990 + 099 = 1089 = 33 ^ 2

19 resultado (s) encontrado (s)

Notarás que los últimos valores de pareja realmente superan los 1000 cuando los agregas a su flip. No sé si eso está permitido o no.

Crédito a Jonathan King por el resultado de la solución.

Deje que el número de 3 dígitos sea [matemático] N = 100a + 10b + c [/ matemático] con [matemático] a \ le c [/ matemático]. Además, deje que [math] b = a + c + k [/ math] con [math] 9 \ ge k \ ge 0 [/ math], luego, para algún número entero [math] m [/ math], [math] {m ^ 2} = 101 (b – k) + 20b = 121b – 101k [/ matemáticas].

Los únicos valores de [matemática] k [/ matemática] que conducen a una solución de un solo dígito para [matemática] b [/ matemática] son ​​[matemática] 0 [/ matemática] y [matemática] 1 [/ matemática].

Si [math] k = 0, [/ math] [math] {m ^ 2} = 121b [/ math] y así [math] b [/ math] debe ser un cuadrado perfecto de un solo dígito que nos permita estas soluciones: 110, 143, 198, 242, 297, 396, 440, 495 y 990. Tenga en cuenta que estoy descuidando el orden inverso de mis respuestas.

Cuando [math] k = 1, [/ math] [math] {m ^ 2} = 121b – 101 [/ math] y el único valor de un solo dígito para b que satisface esto es 6, que nos da 164, 263 y 560.

Ahora, si [matemática] k <0 [/ matemática], considere [matemática] {m ^ 2} = 121b + 101k [/ matemática] o que no hay soluciones de un solo dígito.

  ruby -e 'p (100..999) .seleccione {| x |  Math.sqrt (x + x.to_s.reverse.to_i) .modulo (1) .zero?  } '

[matemáticas] [110, 143, 164, 198, 242, 263, 297, 341, 362, 396, 440, 461, 495, 560, 594, 693, 792, 891, 990] [/ matemáticas]

  > [a |  a <- [100..999], b <- [((a +). leer. invertir. mostrar) a], ((b ==). (^ 2) .floor. sqrt. fromIntegral) b]
 [110,143,164,198,242,263,297,341,362,396,440,461,495,560,594,693,792,891,990]