First Threshold Under Running Sum
Submit solution
Points:
10 (partial)
Time limit:
1.0s
Memory limit:
64M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目說明
輸入 10 個整數。先定義一個累計總和 S,初始值為 0,然後依序讀入每個數字 x,做以下判斷:
如果 x 大於等於 S,就把 S 加上 x 的數值,也就是S = S + x,繼續讀取下一個 x。
如果 x 小於 S,就把 x 稱為「門檻」,或是說,第一個被跨過的門檻。程式的目的是要找到第一個門檻,輸出門檻的數值,然後忽略後續數字(或是輸出後直接結束程式)。
測試資料保證至少存在一個門檻。
提示:用個迴圈依序讀入 10 個整數,累加它們,直到有一個新數字比目前累加的總和小時,就輸出那個數字。
可參考以下模板
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long sum = 0; // 目前的總和
int threshold = -1; // 第一個比總和小的數
// Step 1: 我們要重複幾次?
for (__________________________) {
// Step 2: 每次先做什麼才能進行以下工作?
__________________________
// Step 3: 該如何判斷目前數字是否「比總和小」?
if (__________________________) {
// Step 4: 發生條件後要做什麼?
__________________________
// Step 5: 怎麼讓程式提早結束?
__________________________
} else {
// Step 6: 若沒發生條件,該做什麼?
__________________________
}
}
// Step 7: 印出結果
__________________________
sc.close();
}
}
輸入值的格式
- 輸入一行資料,恰好 10 個整數。
- 每個整數的範圍:0 <= x <= 1000。
輸出值的格式
輸出單一整數,即第一個門檻的值。
各種需要注意的邊界條件
- x < S 才會被視為門檻;x == S 不是門檻。
- 第一個門檻出現即結束,後續輸入不再計算也不輸出。
- 允許輸入包含 0;當 S > 0 時,0 可能成為門檻。
- 允許鄰近的兩個 x 是相同值。
- S 的最大可能值不超過 10000,使用整數型別即可。
- 保證至少有一個門檻,因此一定會有輸出。
sample input1
5 6 2 20 100 0 0 0 0 0sample output1
2解釋:S 從 0 開始。讀 5,5>=0 累加 S=5;讀 6,6>=5 累加 S=11;讀 2,2<11 成為第一個門檻,輸出 2。
sample input2
7 5 10 0 0 0 0 0 0 0sample output2
5解釋:讀 7,S=7;下一個是 5,5<7,第一個門檻為 5。
Comments