Trong Base-10, tất cả các ô vuông hoàn hảo kết thúc bằng 0 , 1 , 4 , 5 , 6 hoặc 9 .
Trong Base-16, tất cả các ô vuông hoàn hảo kết thúc bằng 0 , 1 , 4 hoặc 9 .
Nilknarf mô tả lý do tại sao và đây là cách giải quyết vấn đề này rất tốt trong câu trả lời này , nhưng tôi cũng sẽ đưa ra một mô tả ngắn gọn ở đây:
Khi bình phương một số Base-10, N , chữ số "cái" không bị ảnh hưởng bởi những gì trong chữ số "hàng chục" hoặc chữ số "hàng trăm", v.v. Chỉ có chữ số "cái" trong N ảnh hưởng đến chữ số "cái" trong N 2 , vì vậy một cách dễ dàng (nhưng có thể không phải là gôn nhất) để tìm tất cả các chữ số cuối có thể có cho N 2 là tìm n 2 mod 10 cho tất cả 0 <= n < 10 . Mỗi kết quả là một chữ số cuối cùng có thể. Đối với Base-m, bạn có thể tìm thấy n 2 mod m cho tất cả 0 <= n < m .
Viết chương trình, khi được cung cấp N đầu vào , sẽ xuất tất cả các chữ số cuối cùng có thể cho một hình vuông hoàn hảo trong Base-N (không trùng lặp). Bạn có thể giả sử N lớn hơn 0 và N đủ nhỏ để N 2 không bị tràn (Nếu bạn có thể kiểm tra tất cả các cách lên đến N 2 , tôi sẽ cung cấp cho bạn một số điểm hữu hạn, nhưng hãy biết rằng tỷ giá hối đoái của điểm brownie với điểm thực là vô cùng với một).
Các xét nghiệm:
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
Đây là mã golf , vì vậy các quy tắc tiêu chuẩn được áp dụng!
(Nếu bạn thấy điều này quá dễ, hoặc bạn muốn có một câu hỏi sâu hơn về chủ đề này, hãy xem xét câu hỏi này: Độ che phủ tối thiểu của các cơ sở để kiểm tra dư lượng bậc hai về độ vuông góc ).