Eva的家庭作業裏有很多數列填空練習。填空練習的要求是:已知數列的前四項,填出第五項。因為已經知道這些數列只可能是等差或等比數列,她決定寫一個程式來完成這些練習。
這個是一個解法,內容用的稍微複雜些,不過可以處理很多項的數列,不一定只有題目指定的輸出5項。你可以複製到編輯器執行看看。
Python
times = int(input()) # 令 times 為 輸入次數
for i in range(times): # 執行 「times」 次
input = list(map(int, input().split())) # 輸入數字,陣列格式
# 判斷是不是等差數列
if (input[3] - input[2]) == (input[2] - input[1]): # 如果 第3項減第2項 = 第2項減第1項(等差數列每項差皆相同)
# 是等差數列
d = input[3] - input[2] # 取得公差
input.append(int(input[3] + d)) # 新增答案至最後一項
else:
# 題目只有可能是等差或等比,不是等差就是等比了
r = input[3] / input[2] # 取得公比
input.append(int(input[3] * r)) # 新增答案至最後一項
# 輸出答案
for i in input:
print(i, end=" ") # 把陣列中的每一項印出來
if i == len(input):
# 因為上面的輸出法會造成每印出一個數字後面都接著空格,但最後一個其實不用
print("\b") # 所以,如果是最後一個,那就刪掉最後一個字元(不要的空格)
# 刪除陣列
del input
這邊有另外一位同學的解法,比較好理解!也可以自己執行看看!
Python
n=int(input()) # 令 n 為 輸入次數
for i in range(n): # 執行 「n」 次
p=list(map(int,input().split())) # 輸入數字,陣列格式
if p[1]-p[0]==p[2]-p[1]: # 如果 第1項減第0項 = 第2項減第1項(等差數列每項差皆相同)
# 是等差數列
ans=p[3]+(p[2]-p[1]) # 答案是 第3項+公差
else:
# 是等比數列
ans=p[3]*(p[2]//p[1]) # 答案是 第3項+公比
print(p[0],p[1],p[2],p[3],ans) # 印答案(這個例子不會有最後一個字有空格的問題)
大家也可以嘗試其他種解法。