这里开始一直超时,后来看了公式,就发现自己傻了
C[k]=(A[1]+A[2]+⋯+A[k])⋅B[k]+(B[1]+B[2]+⋯+B[k])⋅A[k]−A[k]⋅B[k]
注意long long
/**************************************************************
Problem: 1028
User: yp0408100207
Language: C++
Result: Accepted
Time:560 ms
Memory:4636 kb
****************************************************************/
#include<iostream>
#include<cstdio>
using namespace std;
const int mod=1000000007;
long long a[100001];
long long b[100001];
long long suma[100001];
long long sumb[100001];
int main()
{
int n,i;
scanf("%d",&n);
suma[0]=0;
sumb[0]=0;
for(i=1;i<=n;i++)
{
scanf("%lld",&a[i]);
suma[i]=suma[i-1]+a[i];
suma[i]%=mod;
}
for(i=1;i<=n;i++)
{
scanf("%lld",&b[i]);
sumb[i]=sumb[i-1]+b[i];
sumb[i]%=mod;
}
long long ans;
for(i=1;i<=n;i++)
{
if(i!=1) putchar(' ');
ans=sumb[i-1]*a[i]%mod;
ans%=mod;
ans+=suma[i-1]*b[i]%mod;
ans%=mod;
ans+=a[i]*b[i]%mod;
printf("%lld",ans%mod);
}
putchar('\n');
return 0;
}