ZeroJudge a005. Eva 的回家作業

  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) # 印答案(這個例子不會有最後一個字有空格的問題)

大家也可以嘗試其他種解法。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *