```cpp
#include <bits/stdc++.h>
using namespace std;
const long long mod=1000000007;
long long pre[500005],sum[500005];
long long a[500005],b[500005];
int main()
{
long long n; scanf("%lld",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]),pre[i]=(pre[i-1]+a[i])%mod;
for(int i=1;i<=n;i++)
scanf("%lld",&b[i]),sum[i]=(sum[i-1]+b[i])%mod;
long long ans1=0,ans2=0,ans3=0;
for(int i=1;i<=n;i++)
{
ans1=(ans1+pre[i]*sum[i]%mod)%mod;
ans2=(ans2+pre[i])%mod;
ans3=(ans3+sum[i])%mod;
}
printf("%lld",((n+1)*ans1%mod-ans2*ans3%mod)%mod);
return 0;
}
```
by E1_de5truct0r @ 2021-09-26 17:39:29
@[zhengjinchen](/user/195198) `(n+1)*ans1%mod-ans2*ans3%mod` 可能是负数,所以要先 +mod 再 %mod
by S0CRiA @ 2021-09-26 17:49:10
`printf("%lld",((n+1)*ans1%mod-ans2*ans3%mod+mod)%mod);`
by S0CRiA @ 2021-09-26 17:49:29
@[Fее_cle6418](/user/390770) Orz 谢谢
by E1_de5truct0r @ 2021-09-26 20:45:11