題目描述

給定一個大小為N的整數陣列,您需要計算其中所有元素數量的總和。要特別注意的是,數值可能會很大!



一個32位元的整數(int)可以表示的數值範圍介於-231到231-1(包含-231和231-1)。在計算總和的過程中,數值可能會超過32位元整數所能表示的範圍。

原題網址

輸入格式

第一行包含一個整數N,範圍在1到10(包含1和10)之間,接下來的一行有N個整數,範圍在0到1010(包含0和1010),使用空格進行分隔,每個整數分別表示陣列的一個元素。

輸出格式

輸出陣列中所有元素相加的結果。

範例輸入

5
1000000001 1000000002 1000000003 1000000004 1000000005

範例輸出

5000000015

額外解釋

1000000001 + 1000000002 + 1000000003 + 1000000004 + 1000000005 = 5000000015

解題概念

先從標準輸入中讀取陣列的長度和陣列的元素,建立出整數陣列物件,接著再使用Java 8提供的串流(Stream)功能,把陣列轉成串流物件後,再使用「asLongStream」方法轉成長整數的串流,接著使用「sum」方法來計算總和。

參考答案

import java.util.Arrays;
import java.util.Scanner;

public class Solution {

    public static void main(final String[] args) throws Exception {
        final Scanner sc = new Scanner(System.in);
        final int n = sc.nextInt();
        final int[] array = new int[n];
        for (int i = 0; i < n; ++i) {
            array[i] = sc.nextInt();
        }
        System.out.println(Arrays.stream(array).asLongStream().sum());
    }
}