Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<map>using namespace std;const int MAXN=1e5+10;const int MOD =1e9+7;int N;int A[MAXN],f[MAXN],sumA[MAXN],sumf[MAXN];map<int,int> mp;int main(){cin>>N;for(int i=1;i<=N;i++){cin>>A[i];sumA[i]=sumA[i-1]+A[i];sumA[i]%=MOD;}mp[0]=1;f[0]=1;sumf[0]=1;for(int i=1;i<=N;i++){f[i]=sumf[i-1]-mp[sumA[i]];f[i]=(f[i]+MOD)%MOD;sumf[i]=sumf[i-1]+f[i];sumf[i]%=MOD;mp[sumA[i]]+=f[i];mp[sumA[i]]%=MOD;}cout<<f[N]<<endl;