网站导航还值得做,云南建设企业网站,软件下载网页制作素材,wordpress注册用户邮件验证区间和的和
题目大意#xff1a;
给出一个数组#xff0c;求出所有区间和的总和
输入样例#xff1a;
3
1
2
3输出样例#xff1a;
20数据范围#xff1a;
对于30%的数据#xff1a;1⩽n⩽1001\leqslant n\leqslant 1001⩽n⩽100 对于50%的数据#xff1a;1⩽n⩽1…区间和的和
题目大意
给出一个数组求出所有区间和的总和
输入样例
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 那我们从每个数下手 每个数可能在多少个区间中出现呢 首先可以发现区间的最前端要小于等于ii种可能ii种可能ii种可能最后端要大于等于in−i1种可能in-i1种可能in−i1种可能 于是我们直接那两个数相乘然后乘上a[i]a[i]a[i]在求和即可
代码
#includecstdio
using namespace std;
long long n,a,ans;
int main()
{scanf(%ld,n);for (long long i1;in;i){scanf(%lld,a);ans(ansa*i*(n-i1))%1000000007;//出现次数乘a再求和}printf(%lld,ans);
}