70分求调
查看原帖
70分求调
655227
Zbc20211226楼主2024/8/1 23:03

样例都对了,8,9,10WA不知道为什么

#include<bits/stdc++.h>
using namespace std;
const int N=500010;
long long u[N],v[N],a[N],b[N],f[N],g[N],ans=0,x=0,y,m=1e9+7,n;
int main()
{
	scanf("%lld",&n);
    for(long long i=1;i<=n;++i){
		scanf("%lld",&a[i]);
		u[i]=(u[i-1]+a[i])%m;
    }
    for(long long i=1;i<=n;++i){
		scanf("%lld",&b[i]);
		v[i]=(v[i-1]+b[i])%m;
    }
    for(long long i=n;i;--i){
    	f[i]=(f[i+1]+a[i]*(n-i+1))%m;
    	g[i]=(g[i+1]+b[i]*(n-i+1))%m;
	}
	for(long long r=1;r<=n;++r)x+=(u[r]*v[r])%m;
	x%=m;
	ans=x;
    for(long long l=1;l<n;++l){
    	y=((a[l]*g[l])%m+(b[l]*f[l])%m+m-(a[l]*b[l]*(n-l+1))%m)%m;
    	x=(x+m-y)%m;
    	ans+=x;
    }
    printf("%lld",ans%m);
    return 0;
}
2024/8/1 23:03
加载中...