Sequence Right Shift Summation


Submit solution

Points: 10 (partial)
Time limit: 1.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
Java 19, Java 8

題目說明

寫一個程式,讀入一個整數 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 個整數,代表運算後的結果。數值之間請用一個空白隔開,行尾請勿輸出多餘空白。

各種需要注意的邊界條件

  1. 極小輸入:當 n = 1 時,數列只有一個數字,此時輸出應有 2 個數字,且這兩個數字通常是相同的(因為第 1 個是原數,第 2 個是原數右移後的結果)。

  2. 重複數值:數列中可能包含完全相同的數字,程式需正確執行加法。

  3. 數值範圍:輸入數值最大為 100,相加後最大可能為 200,不會超過整數 (int) 的儲存範圍。

  4. 數列長度:n 最大可達 100,需確保陣列宣告足夠大或是使用動態結構。

  5. 邊界處理:迴圈撰寫時,需特別注意第 1 個元素與最後 1 個元素的處理,避免陣列索引越界 (Index Out of Bounds)。

sample input1

3 1 2 4

sample output1

1 3 6 4

解釋:計算方式: 1 2+1=3 4+2=6 4

sample input2

1 51

sample output2

51 51

解釋:n=1,數列只有 [51]。 計算方式: 第1個:51 第2個:51


Comments

There are no comments at the moment.