【结论】区间和的和
區間和的和
題目大意:
給出一個數組,求出所有區間和的總和
輸入樣例:
3 1 2 3輸出樣例:
20數據范圍:
對于30%的數據:1?n?1001\leqslant n\leqslant 1001?n?100
對于50%的數據:1?n?10001\leqslant n\leqslant 10001?n?1000
對于100%的數據:1?n?1000001\leqslant n\leqslant 1000001?n?100000
解題思路:
直接枚舉所有區間會TLE
那我們從每個數下手
每個數可能在多少個區間中出現呢
首先可以發現區間的最前端要小于等于i(i種可能)i(i種可能)i(i種可能),最后端要大于等于i(n?i+1種可能)i(n-i+1種可能)i(n?i+1種可能)
于是我們直接那兩個數相乘然后乘上a[i]a[i]a[i]在求和即可
代碼:
#include<cstdio> using namespace std; long long n,a,ans; int main() {scanf("%ld",&n);for (long long i=1;i<=n;++i){scanf("%lld",&a);ans=(ans+a*i*(n-i+1))%1000000007;//出現次數乘a再求和}printf("%lld",ans); }總結
- 上一篇: 电脑看久了眼睛干涩长时间看电脑眼睛干涩
- 下一篇: 有关于蓄电池的保养方法及注意事项如何保养