题意就是给你一个数组 让你分成3个区间 能不能让3个区间里面的值都相等
解题方法 用一个前缀和
先统计出所有的1/3的值个数 碰到 2/3 就加一次1/3的总个数 就知道可以分为几个区间了
代码有点乱
#include "bits/stdc++.h"
#define ll long long
using namespace std;
const int N = 5e5+5;
ll n,s[N];
int main()
{
cin >> n;
for(int i=1;i<=n;i++){
cin >> s[i];
s[i]+=s[i-1];
}
if(s[n]%3!=0) cout << 0 << endl;
else{
ll ans_num = 0,ans_ans = 0;
for(int i=1 ;i<=n ;i++)
{
if(i>1 && i<n && s[i]*3 == s[n]*2)
{
ans_num+=ans_ans;
}
if(s[i]*3 == s[n])
{
ans_ans++;
}
}
cout << ans_num << endl;
}
return 0;
}