In Base-10, tutti i quadrati perfetti terminano con 0 , 1 , 4 , 5 , 6 o 9 .
Nella Base-16, tutti i quadrati perfetti terminano con 0 , 1 , 4 o 9 .
Nilknarf descrive perché questo è e come risolverlo molto bene in questa risposta, ma darò anche una breve descrizione qui:
Quando si quadrano un numero Base-10, N , la cifra "uni" non è influenzata da ciò che è nella cifra "decine" o dalla cifra "centinaia" e così via. Solo la cifra "one" in N influenza la cifra " one " in N 2 , quindi un modo semplice (ma forse non più golfistico) per trovare tutte le ultime cifre possibili per N 2 è trovare n 2 mod 10 per tutti 0 <= n < 10 . Ogni risultato è un'ultima cifra possibile. Per Base-m, puoi trovare n 2 mod m per tutti 0 <= n < m .
Scrivi un programma che, quando viene dato l'ingresso N , emette tutte le ultime cifre possibili per un quadrato perfetto in Base-N (senza duplicati). Puoi presumere che N sia maggiore di 0 e che N sia abbastanza piccolo da non far traboccare N 2 (se riesci a testare fino a N 2 , ti darò una quantità finita di punti brownie, ma sappi che il tasso di cambio dei punti brownie in punti reali è infinito a uno).
test:
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
questo è code-golf , quindi si applicano le regole standard!
(Se lo trovi troppo facile o vuoi una domanda più approfondita sull'argomento, considera questa domanda: Copertura minima delle basi per il test quadratico dei residui della quadratura ).