Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 5;int n;int lowbit(int x){return x & (-x);}#define ll long longll mod = 1e9 + 7;const int M = 1e7;ll sum[2 * M + 5];ll pre[N];ll a[N];//int main(){scanf("%d", &n);for (int i = 1; i <= n; i++)scanf("%lld", &a[i]);for (int i = 1; i <= n; i++)pre[i] = (pre[i - 1] + a[i]) % mod;ll dp = 1;ll dpans = dp;sum[M] = 1;for (int i = 1; i <= n; i++){dpans = (dp - sum[M + pre[i]] + mod) % mod;dp = (dp + dpans) % mod;(sum[M + pre[i]] += dpans) %= mod;