找出最小的完全平方數
寫一個程式,輸入整數k (0<k<=10),找出k位數中,所有數字均為偶數的完全平方數中最小的一個數。例如當k=5,五位數中所有數字均為偶數的完全平方數中最小的數為26244(26244=1622) 。
Python code:
# -*- coding: utf-8 -*-
"""
找出最小的完全平方數,但此數的所有數字均需為偶數
1、輸入n,表n組測試資料
2、輸入n組測試資料,表數字的位數
3、輸出n個滿足條件的完全平方數
@author: kujter
"""
import math as lp
def square(n): #若是完全平方數,回傳1
a = int(n**0.5)
if n==a*a:
return 1
m=int(input()) #位數
a=[] #儲存完全平方數
x=[] #儲存完全平方數的各位數字
y=[]
z=[]
for i in range(10**(m-1),10**m): #找出完全平方數
if square(i)==1:
a.append(i)
for k in range(len(a)):#分解完全平方數的各個數字
x.append([])
y.append([])
z.append([])
for j in range(m):
ls=a[k]%10
x[k].append(ls)
y[k].append(ls)
a[k]//=10
for p in range(len(a)):
for q in range(m):
if (x[p][q]%2)!=0:
z[p]=x[p]
ret=[i for i in y if i not in z] #利用差集,找出滿足條件的完全平方數
for h in range(len(ret)): #將串列反轉及合併取出數字
ans[h]=[qq for qq in ret[h][::-1]]
answer=[str(ii) for ii in ans[0]]
aa=("".join(answer))
print(aa)
😊 1、先找出輸入位數的n個完全平方數
2、再將這些完全平方數分解找出各位數字
3、判斷各位數字是否偶數
4、用差集,找出偶數的完全平方數,第一個就是最小的
5、由於是串列,故需利用合併,再輸出數字
沒有留言:
張貼留言