close
Content
3025這個4位數相當特別。如果你把他從中間切開你會得到2個長度相同的數30,25。而且此2數和的平方恰等於原來的數,我們稱這種數為quirksome number。
(30+25)2=3025
這個問題是:給你N位數(N=2,4,6,8),要找出符合以上性質的所有數。
For example:4位數就是從0000到9999。注意:數字前方的0也要算在內。也就是說0001等於 (00+01)2 ,是一個4位數的quirksome number。
Input
輸入可能包含了好幾列測試資料,每一列只有一個數字N(N=2,4,6,8),代表要求的是幾位數的quirksome number。
Output
對每一個輸入N,你應該要輸出所有N位數的quirksome number,每個一行,由小到大排列。注意:數字前方的0不可忽略,例如2位數中的quirksome number 01不可只輸出1。
Sample Input #1
2 2
Sample Output #1
00 01 81 00 01 81
python:
""" #這是TLE版 """ while True: try: n=int(input()) n1=(10**n)-1 arr=[str(x).zfill(n)for x in range(10**n)] #print(arr) arr2=[]#裝符合的數字 for i in arr: i_len=len(i)//2 pre_i=int(i[:i_len]) #print(pre_i) pas_i=int(i[i_len:]) #print(pas_i) if((pre_i+pas_i)**2==int(i)):arr2.append(i) print(*arr2,sep='\n') except: break
""" 這是AC版 """ while True: try: n=int(input()) n1=10**(n//2)#我讓她跑的時間 """ N = 2, k = 0 ~ 9 N = 4, k = 00 ~ 99 N = 6, k = 000 ~ 999 N = 8, k = 0000 ~ 9999 """ arr=[str(x).zfill(n)for x in range(n1)] """ 這裡給2會輸出 ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09'] """ #print(arr) arr2=[]#裝符合的數字 for j in arr: i=str(int(j)**2).zfill(n) #這裡便利的每一個元素要先做平方,然後再去做處理 i_len=len(i)//2 pre_i=int(i[:i_len]) #print(pre_i) pas_i=int(i[i_len:]) #print(pas_i) if((pre_i+pas_i)**2==int(j)**2):arr2.append(i) print(*arr2,sep='\n') except: break
文章標籤
全站熱搜