輸入乙個長度為n的陣列a包括(n+1)n/2
個區間。每個區間所有數的和,被稱為區間和,求所有(n+1)n/2
個區間和的和。由於數值較大,輸出mod 1e9+7的結果。
例如:3個數1 2 3,共有6個子區間,包含的數字如下:
,這些區間求和為1 2 3 3 5 6,這6個數字再求和為20.
求出每個位置上的數出現的個數再乘以該位置上的數字
例:5個數 1 2 3 4 5
舉3為例:
從3往後:有3, 3 4, 3 4 5,(n-i+1)=(5-3+1)=3種情況
然後往前看有i=3種情況 不包含,包含2,包含1,2
組合起來就是i*(n-i+1)=9種情況
同時可以發現它是中間對稱的情況
再注意資料過大用long long就行
#includeusing namespace std;
const int mod=1e9+7;
long long a[100010];
int main()
if(n%2)
sum=(sum+i*(n-i+1)*a[i]%mod)%mod;
cout
}
327 區間和的個數
今天的題目還是看了一陣子 我是鏈結 意思是任意子區間內所有元素的和要在lower和upper之間,可以取等 所以題目中 0,0 2,2 都指向各自位置的元素,0,2 就是從第0個元素 一直加到 第2 個元素 等於 2 所以這就是為什麼輸出是3.class solution sum nums i fo...
327 區間和的個數
給定乙個整數陣列 nums,返回區間和在 lower,upper 之間的個數,包含 lower 和 upper。區間和 s i,j 表示在 nums 中,位置從 i 到 j 的元素之和,包含 i 和 j i j 說明 最直觀的演算法複雜度是 o n2 請在此基礎上優化你的演算法。想到了字首和,同時由...
327 區間和的個數
題目描述 給定乙個整數陣列 nums,返回區間和在 lower,upper 之間的個數,包含 lower 和 upper。區間和 s i,j 表示在 nums 中,位置從 i 到 j 的元素之和,包含 i 和 j i j 說明 最直觀的演算法複雜度是 o n2 請在此基礎上優化你的演算法。示例 輸入...