日期:2026年4月23日
ZeroJudge 題目連結:d182. 00256 - Quirksome Squares
解題想法
假設位數為 $n$,題目要找的答案只有可能是 $i = 0, 1, 2, \dots, 98, 10^{n/2} - 1$ 的平方,將 $i^2$ 的左、右兩半加起來,再檢查組合後的數平方是否等於 $i^2$,就可以找到答案。
Python 程式碼
使用時間約為 26 ms,記憶體約為 8.5 MB,通過測試。
def solve():
import sys
result = []
data = sys.stdin.read().split()
ptr = 0
while ptr < len(data):
n = int(data[ptr])
ptr += 1
m = 10**(n//2) # 上限,10 的 n/2 次方
for i in range(m):
square = i*i # 平方
num = square//m + square%m # 左、右兩半相加
if num**2 == square: # 符合條件
ans = str(square).zfill(n) # 前方補 0 至 n 位數
result.append(f"{ans}\n")
sys.stdout.write("".join(result))
if __name__ == "__main__":
solve()