Submission #22585

#TimeUsernameProblemLanguageResultExecution timeMemory
22585past future present (#40)Unifying Values (KRIII5_UV)C++14
0 / 7
3 ms2392 KiB
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
typedef long long ll;
const ll mod = 1000000007;
int n;
ll a[10101];
ll sum[101010];
ll ans;
ll p[10101];
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        scanf("%lld",&a[i]);
        sum[i] = sum[i-1] + a[i];
    }

    for(int i=1;i<n;i++){
        ll x = sum[i];
        if(sum[n]/x*x != sum[n])continue;
        vector<ll> v;
        fill(p,p+n+1,0);
        v.push_back(1);
        for(int j=i+1;j<=n;j++){
            if(sum[j]/x*x == sum[j]){
                ll t = sum[j]/x;
                if(t>1)v.push_back(t);
            }
        }
        p[0]=1;
        for(auto t : v){
            p[t]+=p[t-1];
            p[t]%=mod;
        }
        ans+=p[v.back()];
        ans%=mod;
    }
    printf("%lld\n",ans);
}

Compilation message (stderr)

UV.cpp: In function 'int main()':
UV.cpp:13:19: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^
UV.cpp:15:28: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld",&a[i]);
                            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...