Di Basis-10, semua kuadrat sempurna berakhir dengan 0 , 1 , 4 , 5 , 6 , atau 9 .
Di Basis-16, semua kuadrat sempurna berakhir dengan 0 , 1 , 4 , atau 9 .
Nilknarf menjelaskan mengapa ini dan bagaimana mengerjakannya dengan sangat baik dalam jawaban ini , tetapi saya juga akan memberikan deskripsi singkat di sini:
Saat menguadratkan nomor Base-10, N , digit "yang" tidak terpengaruh oleh apa yang ada di digit "puluhan", atau digit "ratusan", dan sebagainya. Hanya "orang-orang" digit di N mempengaruhi "yang" digit di N 2 , sehingga cara mudah (tapi mungkin tidak golfiest) untuk menemukan semua kemungkinan digit terakhir untuk N 2 adalah untuk menemukan n 2 mod 10 untuk semua 0 <= n < 10 . Setiap hasil adalah kemungkinan digit terakhir. Untuk Base-m, Anda dapat menemukan n 2 mod m untuk semua 0 <= n < m .
Tulis sebuah program yang, ketika diberi input N , mengeluarkan semua digit terakhir yang memungkinkan untuk kuadrat sempurna di Base-N (tanpa duplikat). Anda dapat mengasumsikan N lebih besar dari 0 , dan bahwa N cukup kecil sehingga N 2 tidak akan meluap (Jika Anda dapat menguji sampai N 2 , saya akan memberi Anda jumlah poin brownies yang terbatas, tetapi ketahuilah bahwa nilai tukar poin brownies ke poin nyata adalah infinity ke satu).
Tes:
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
ini kode-golf , jadi aturan standar berlaku!
(Jika Anda merasa ini terlalu mudah, atau Anda menginginkan pertanyaan yang lebih mendalam tentang topik ini, pertimbangkan pertanyaan ini: Penutup minimal pangkalan untuk pengujian kuadrat residu kuadrat ).