2 条题解
-
1
哈希
# include <bits/stdc++.h> using namespace std; int n; const int N = 5e5 + 10; long long a[N], b[N]; long long prea[N], preb[N]; long long suma[N], sumb[N]; long long ret; const long long MOD = 1000000007; int main() { scanf("%d", &n); for (int i = 1; i <= n; i++) { scanf("%lld", &a[i]); prea[i] = (prea[i - 1] + a[i]) % MOD; } for (int i = 1; i <= n; i++) { scanf("%lld", &b[i]); preb[i] = (preb[i - 1] + b[i]) % MOD; } for (int i = 1; i <= n; i++) { (ret += (((n + 1) * prea[i]) % MOD) * preb[i]) %= MOD; suma[i] = (suma[i - 1] + prea[i]) % MOD; sumb[i] = (sumb[i - 1] + preb[i]) % MOD; } long long tot = (suma[n] * sumb[n]) % MOD; ret = (ret - tot + MOD) % MOD; printf("%lld", ret); return 0; }
-
1
#include"bits/stdc++.h" using namespace std; int n; long long a[500010],b[500010]; long long prea[500010],preb[500010]; long long suma,sumb; long long ans; #define mod 1000000007 int main() { scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%lld",&a[i]); prea[i]=(prea[i-1]+a[i])%mod; } for(int i=1;i<=n;++i) { scanf("%lld",&b[i]); preb[i]=(preb[i-1]+b[i])%mod; } for(int i=1;i<=n;i++) { (ans+=(((n+1)*prea[i])%mod)*preb[i])%=mod; suma=(suma+prea[i])%mod; sumb=(sumb+preb[i])%mod; } long long tot=(suma[n]*sumb[n])%mod; ans=(ans-tot+mod)%mod; printf("%lld",ans); return 0; } //by fairicle
- 1
信息
- ID
- 4609
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 5
- 已通过
- 3
- 上传者