Codeforces Round #618 (Div. 2) A. Non-zero

107 阅读1分钟

题目链接: Non-zero
题目大意: 给定数组有n个元素,某次操作可以将任意一个元素+1,求最少需要多少次操作使得该数组的各项之和与各项之积均不为0
思路: 贪心+模拟,首先统计有x项是0,执行x次操作后若数组各项之和为0,则结果为x+1,反之结果为x
代码:

#include<bits/stdc++.h>
#define repn(n) for(int i=1;i<=n;i++)
#define rep(n) for(int i=0;i<n;i++)
#define pb push_back
#define ll long long
using namespace std;
int s[110],n;
int product()
{
    int ans=0;
    repn(n)
    {
        ans+=s[i];
    }
    return ans;
}
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int sum,res;
        sum=res=0;
        memset(s,0,sizeof(s));
        cin>>n;
        repn(n)
        {
            cin>>s[i];
            if(s[i]==0)
               res++;
        }
        sum=product()+res;
        if(sum)
            cout<<res<<endl;
        else
            cout<<res+1<<endl;
    }
}