80分求助

P5686 [CSP-S2019 江西] 和积和

```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


|