Array Element Transformation via Complementary Sum
Submit solution
Points:
10
Time limit:
1.0s
Memory limit:
64M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目說明
本題目要求實作一個陣列轉換程式。使用者會輸入一個正整數 n 以及 n 個整數。程式邏輯分為以下步驟:
計算這 n 個整數的總和 sum。
針對陣列中的每一個元素 x,計算其轉換值。轉換公式為 sum - x。
依序輸出轉換後的 n 個整數,每個整數後方請加上一個空格。
本題目已提供 Java 程式樣板,包含主程式 main 邏輯與輸入輸出處理。應試者僅能實作 transformArray 函數,不得修改其他既有的程式碼內容。
樣板程式碼如下:
import java.util.Scanner;
public class ArrayTransformer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] numbers = new int[n];
int sum = 0;
for (int i = 0; i < n; i++) {
if (scanner.hasNextInt()) {
numbers[i] = scanner.nextInt();
sum += numbers[i];
}
}
transformArrayInPlace(numbers, sum);
for (int i = 0; i < n; i++) {
System.out.print(numbers[i] + " ");
}
}
public static … transformArrayInPlace(...) {
…
}
}
輸入值的格式
第一行包含一個正整數 n。
第二行包含 n 個整數,整數之間以空格分隔。
輸出值的格式
輸出為 n 個整數,每個整數之後必須緊接一個半形空格。
各種需要注意的邊界條件
當 n=1 時,轉換後的結果應為 0,因為 sum 即為該數字本身,sum - x = 0。
輸入的整數可能包含正整數、負整數或 0。
總和 sum 可能為負數。
陣列中可能存在重複的數字。
所有計算結果與輸入數值均在 Java int 型別範圍內。
測試資料(1)-輸入
3 10 20 30
測試資料(1)-輸出
50 40 30
測試資料(1)-解釋與特性
特性:標準輸入情境。
解釋:sum = 10 + 20 + 30 = 60。轉換結果為 60-10=50, 60-20=40, 60-30=30。
測試資料(2)-輸入
1 99
測試資料(2)-輸出
0
測試資料(2)-解釋與特性
特性:最小陣列長度 n=1。
解釋:sum = 99。轉換結果為 99-99=0。
Comments