В Base-10 все совершенные квадраты заканчиваются на 0 , 1 , 4 , 5 , 6 или 9 .
В Base-16 все совершенные квадраты заканчиваются на 0 , 1 , 4 или 9 .
Нилькнарф описывает, почему это так и как это очень хорошо решить в этом ответе, но я также дам краткое описание здесь:
При возведении в квадрат числа Base-10, N , цифра «единицы» не зависит от того, что находится в цифре «десятки» или цифры «сотни» и так далее. Только цифра «единицы» в N влияет на цифру «единицы» в N 2 , поэтому простой (но, возможно, не самый удачный) способ найти все возможные последние цифры для N 2 - это найти n 2 mod 10 для всех 0 <= n < 10 . Каждый результат является возможной последней цифрой. Для Base-m вы можете найти n 2 mod m для всех 0 <= n < m .
Напишите программу, которая при вводе N выводит все возможные последние цифры для идеального квадрата в Base-N (без дубликатов). Вы можете предположить, что N больше 0 , и что N достаточно мало, чтобы N 2 не переполнялся (Если вы можете протестировать весь путь до N 2 , я дам вам конечное количество очков брауни, но знайте, что обменный курс брауни-баллов к реальным баллам равен бесконечности до единицы).
тесты:
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
это код-гольф , поэтому применяются стандартные правила!
(Если вы находите это слишком простым или хотите получить более глубокий вопрос по этой теме, рассмотрите этот вопрос: минимальное покрытие базисов для проверки квадратичности квадратичного остатка ).