(出自台北縣立三和國民中學九十五學年度 「數學金頭腦 」團體賽試題)
以下是我的解題思路,我不知道這類題目有甚麼特別算法,只能逐步排除不合理的數:
設較大的數是a, 較小的數是b
$a^2-1111k=b^2, 1 \leq k \leq 7 $
因為
$32^2=1024 $
$46^2=2116, -1111=1005 $
$94^2=8836, +1111=9947 $
$99^2=9801 $
可知k不能大於7,
$46<a<99, 32<b<94 $
從 $a^2-1111k=b^2 $
$(a+b)(a-b)=101 \times11k $
可知a+b或a-b的因數包含101, a-b不可能,
因為最大的a的可能值和最小的b的可能值相差不到100
合理假設$a+b=101m$, m是正整數, 由於a+b<200, 所以m=1
$a+b=101$
那麼
$a-b=11k$
$2a=101+11k$
a是正整數, 所以k只能是單數
for k=1
a=56, b=45
for k=3
a=67, b=34
for k=5,
a=78, b=23
b低於b的最小可能值, 捨去
驗算
a=56, b=45, k=1時
$a^2=3136 $
$b^2=2025 $
$a^2-b^2=1111=1111 \times1$, 符合題意和k的條件
a=67, b=34, k=3時
$a^2=4489 $
$b^2=1156 $
$a^2-b^2=3333=1111 \times3$, 符合題意和k的條件
所以答案所求的四位數是3136或4489
然後我想用程式去解應該更快,這是我用Python34的演算結果:
[3136, 4489]
Code如下:
#A list contains all 4-digit squares lst=[i**2 for i in range(1,100) if i**2 in range(1000,10000)] #A empty list for appending answers ans=[] #calculate the difference between elements in lst for i in lst: if lst.index(i) < len(lst)-7: for j in lst[lst.index(i)+6:]: #Check if the difference equals to multiples of 1111 if (j-i)%1111 == 0: ans.append(j) print (sorted(ans))
沒有留言 :
張貼留言