Na Base-10, todos os quadrados perfeitos terminam em 0 , 1 , 4 , 5 , 6 ou 9 .
Na Base-16, todos os quadrados perfeitos terminam em 0 , 1 , 4 ou 9 .
Nilknarf descreve por que isso é e como resolver isso muito bem nesta resposta, mas também darei uma breve descrição aqui:
Ao quadrado um número da Base 10, N , o dígito "ones" não é afetado pelo que está no dígito "dezenas", ou no dígito "centenas", e assim por diante. Somente o dígito "uns" em N afeta o dígito "uns" em N 2 , portanto, uma maneira fácil (mas talvez não a mais divertida) de encontrar todos os últimos dígitos possíveis para N 2 é encontrar n 2 mod 10 para todos os 0 <= n < 10 . Cada resultado é um último dígito possível. Para Base-m, você pode encontrar n 2 mod m para todos os 0 <= n < m .
Escreva um programa que, quando recebida a entrada N , produz todos os últimos dígitos possíveis para um quadrado perfeito na Base-N (sem duplicatas). Você pode assumir que N é maior que 0 e que N é pequeno o suficiente para que N 2 não transborde (se você puder testar até N 2 , darei a você uma quantidade finita de pontos de brownie, mas saiba que a taxa de câmbio de pontos brownie para pontos reais é infinito para um).
Testes:
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
isso é código-golfe , então as regras padrão se aplicam!
(Se você acha isso muito fácil ou deseja uma pergunta mais aprofundada sobre o assunto, considere esta pergunta: Cobertura mínima de bases para teste de quadrática de resíduos de esquadria ).