珂朵莉与宇宙
https://ac.nowcoder.com/acm/problem/14600
#include <iostream> #include <cstdio> #include <algorithm> #include <stack> #include <queue> #include <string.h> #include <cmath> #include <bitset> #include <set> #include <map> #define ll long long const int inf = 0x3f3f3f3f; const int mod = 1e9+7; const double p = 3.141592653589793238462643383; using namespace std; //sum[r] - sum[r-l+1] = j*j int main() { ios::sync_with_stdio(false); int n,sum,x,num[5000005]; ll ans = 0; cin >> n; num[0] = 1; sum = 0; for(int i = 1; i <= n; i++){ cin >> x; sum += x; for(int j = 0; j * j <= sum; j++){ ans += 1ll*num[sum - j * j]; } num[sum]++; } cout << ans << endl; return 0; }