地址:http://acm.csust.edu.cn/contest/78/problem/A
Input
第一行包含一个正整数
第二行包含
第三行包含
Output
输出
3
1 2 3
1 2 3
25
题意:根据所给代码。比如 1 2 3
4 5 6
就是1*4+1*5+1*6+2*5+2*6+3*6
解析:上面这个就是1*(4+5+6)+2*(5+6)+3*6,括号里就可以使用前缀和来预处理一下,记得倒着处理。
#include<iostream>
#include<vector>
#include<set>
#include<cmath>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
int a[maxn];
int b[maxn],c[maxn];
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
cin>>b[i];
for(int i=n;i>=0;i--)
b[i]=b[i+1]+b[i];
ll sum=0;
for(int i=0;i<n;i++)
sum+=a[i]*b[i];
cout<<sum<<endl;
}