總網頁瀏覽量

2018年2月12日 星期一

105學年度彰雲嘉區資訊能力競賽複賽程式設計題Q2(找出最小的完全平方數)


找出最小的完全平方數
寫一個程式,輸入整數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、由於是串列,故需利用合併,再輸出數字       


沒有留言:

張貼留言