У Базі-10 всі ідеальні квадрати закінчуються на 0 , 1 , 4 , 5 , 6 або 9 .
У Base-16 усі ідеальні квадрати закінчуються на 0 , 1 , 4 або 9 .
Nilknarf описує , чому це і як вирішити цю проблему дуже добре в цьому відповіді, але я також дати опис коротко тут:
При квадраті числа 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
це код-гольф , тому застосовуються стандартні правила!
(Якщо вам це здається занадто простим, або ви хочете більш глибоке запитання по цій темі, врахуйте це питання: Мінімальне покриття підстав для квадратичного випробування залишків квадратності ).