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,做以下判斷:

  1. 如果 x 大於等於 S,就把 S 加上 x 的數值,也就是S = S + x,繼續讀取下一個 x。

  2. 如果 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 0

sample 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 0

sample output2

5

解釋:讀 7,S=7;下一個是 5,5<7,第一個門檻為 5。


Comments

There are no comments at the moment.