思路:简单数乘法结合律,然后前缀和的模板题:
前缀和的知识:
本题的代码:前缀和知识--模板;
#include <bits/stdc++.h> #define int long long //(有超时风险) #define PII pair<int,int> #define endl '\n' #define LL __int128 using namespace std; const int N=2e5+10,M=1e3+10,mod=998244353,INF=0x3f3f3f3f; int a[N],b[N],c[N],pre[N]; signed main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n;cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; for(int i=1;i<=n;i++) pre[i]=a[i]+pre[i-1]; int ans=0; //因为前缀和(i,n)的和为(pre[n]-pre[i-1]) //但是本题下标要+1,所以变成了i。 for(int i=1;i<=n;i++) ans+=a[i]*(pre[n]-pre[i]); cout<<ans<<endl; return 0; }
P8772 [蓝桥杯 2022 省 A] 求和--2024蓝桥杯冲刺省一
于 2024-02-08 21:09:30 首次发布

763

被折叠的 条评论
为什么被折叠?



