题目

源地址:

http://codeforces.com/problemset/problem/18/C

理解

题意很简单,把一个给定的数列分成两份,要求两份数字之和相等。直接暴力乱搞,预处理的时候用两个数组分别保存前后缀的数字之和,然后只要遍历一遍,就能得到最后的结果。

代码


#define MAXN 100000+10

int a[MAXN];
int b[MAXN];
int c[MAXN];
int n,ans;

void init()
{
    scanf("%d",&n);
    b[0]=0;
    for(int i=1; i<=n; i++)
    {
        scanf("%d",&a[i]);
        b[i]=b[i-1]+a[i];
    }
    for(int j=n; j>=1; j--)
    {
        c[j]=c[j+1]+a[j];
    }
}

int main(int argc, char const *argv[])
{
    init();
    for(int i=1; i<n; i++)
    {
        if(b[i]==c[i+1])
            ans++;
    }
    printf("%d\n",ans);
    return 0;
}

更新日志

  • 2014年11月26日 已AC。