Sequence Right Shift Summation
題目說明
寫一個程式,讀入一個整數 n 以及長度為 n 的整數數列。程式需要計算這個數列加上「該數列向右平移一個位置」後的結果。 具體運算規則如下: 假設輸入數列為 A,長度為 n。 輸出的結果數列長度應為 n + 1。 輸出的第 1 個數值為:A 的第 1 個數。 輸出的中間數值(第 2 到第 n 個)為:A 的當前位置數值加上 A 的前一個位置數值。 輸出的最後 1 個數值(第 n + 1 個)為:A 的最後一個數。 範例: 若輸入 n = 3,數列為 1, 2, 3。 運算過程: 第 1 個數:1 第 2 個數:2 + 1 = 3 第 3 個數:3 + 2 = 5 第 4 個數:3 輸出結果:1 3 5 3
提示:分成三個區段處理,輸出第一個數字、用迴圈輸出中間的每個數字(如何相加?)、輸出最後一個數字
輸入值的格式
輸入包含兩行: 第一行:一個正整數 n,代表數列的長度。 (1 <= n <= 100) 第二行:n 個整數,代表數列中的元素,數值之間以空白隔開。每個數值的範圍均為 [1, 100]。
輸出值的格式
輸出一行共 n + 1 個整數,代表運算後的結果。數值之間請用一個空白隔開,行尾請勿輸出多餘空白。
各種需要注意的邊界條件
極小輸入:當 n = 1 時,數列只有一個數字,此時輸出應有 2 個數字,且這兩個數字通常是相同的(因為第 1 個是原數,第 2 個是原數右移後的結果)。
重複數值:數列中可能包含完全相同的數字,程式需正確執行加法。
數值範圍:輸入數值最大為 100,相加後最大可能為 200,不會超過整數 (int) 的儲存範圍。
數列長度:n 最大可達 100,需確保陣列宣告足夠大或是使用動態結構。
邊界處理:迴圈撰寫時,需特別注意第 1 個元素與最後 1 個元素的處理,避免陣列索引越界 (Index Out of Bounds)。
sample input1
3 1 2 4sample output1
1 3 6 4解釋:計算方式: 1 2+1=3 4+2=6 4
sample input2
1 51sample output2
51 51解釋:n=1,數列只有 [51]。 計算方式: 第1個:51 第2個:51
Comments