En Base-10, todos los cuadrados perfectos terminan en 0 , 1 , 4 , 5 , 6 o 9 .
En Base-16, todos los cuadrados perfectos terminan en 0 , 1 , 4 o 9 .
Nilknarf describe por qué esto es así y cómo resolverlo muy bien en esta respuesta, pero también daré una breve descripción aquí:
Al cuadrar un número de Base 10, N , el dígito "unos" no se ve afectado por lo que está en el dígito "decenas" o el dígito "cientos", y así sucesivamente. Solo el dígito "unos" en N afecta el dígito "unos" en N 2 , por lo que una forma fácil (pero quizás no la más elegante) de encontrar todos los últimos dígitos posibles para N 2 es encontrar n 2 mod 10 para todos 0 <= n < 10 . Cada resultado es un posible último dígito. Para Base-m, puede encontrar n 2 mod m para todos 0 <= n < m .
Escriba un programa que, cuando recibe la entrada N , emite todos los últimos dígitos posibles para un cuadrado perfecto en Base-N (sin duplicados). Puede suponer que N es mayor que 0 , y que N es lo suficientemente pequeño como para que N 2 no se desborde (si puede probar hasta N 2 , le daré una cantidad finita de puntos de brownie, pero sepa que el tipo de cambio de puntos brownie a puntos reales es infinito a uno).
Pruebas:
Input -> Output
1 -> 0
2 -> 0,1
10 -> 0,1,5,6,4,9
16 -> 0,1,4,9
31 -> 0,1,2,4,5,7,8,9,10,14,16,18,19,20,25,28
120 -> 0,1,4,9,16,24,25,36,40,49,60,64,76,81,84,96,100,105
Este es el código de golf , por lo que se aplican reglas estándar.
(Si considera que esto es demasiado fácil, o si desea una pregunta más detallada sobre el tema, considere esta pregunta: cobertura mínima de las bases para la prueba cuadrática de residuos de la cuadratura ).