链接:https://ac.nowcoder.com/acm/contest/297/B

来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒

空间限制:C/C++ 262144K,其他语言524288K

64bit IO Format: %lld

题目描述

小w与tokitsukaze一起玩3ds上的小游戏,现在他们遇到了难关。

他们得到了一个数列,通关要求为这个数列的和为0,并且只有一次改变一个数的符号的机会(正数变成负数,负数变成正数)。

请问小w与tokitsukaze能否通关,如果能,请输出有多少个数符合要求,如果不能,请输出-1。

输入描述:

第一行包括一个正整数n(1≤n≤10^5),表示这个数列有n个数。
接下来一行有n个数x (-100≤x≤100),表示数列(数列的和保证不等于0)。

输出描述:

输出有多少个符合要求的数,如果没有,请输出-1。

示例1

输入

复制

5
1 3 -5 3 4

输出

复制

2

说明

只要把一个3变成-3,数列的和就变为0。数列里总共有两个3,所以有2个符合要求的数。

示例2

输入

复制

4
1 2 4 8

输出

复制

-1

题解:

若sum为奇数,肯定不存在这个数,若是偶数,除2遍历即可

代码1:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm> using namespace std; int main()
{ int n;
cin>>n;
int a[100005];
long long int sum=0;
for(int t=0;t<n;t++)
{
scanf("%d",&a[t]);
sum+=a[t];
}
int temp;
if(sum%2==0)
{
temp=sum/2;
}
else
{
printf("-1\n");
return 0;
}
int s=0;
for(int t=0;t<n;t++)
{
if(a[t]==temp)
{
s++;
}
}
if(s==0)
{
printf("-1\n");
}
else
{
printf("%d\n",s);
}
return 0;
}

代码2:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm> using namespace std; int main()
{
int n; while(scanf("%d",&n)!=EOF)
{ int a[100005];
long long int sum=0;
for(int t=0;t<n;t++)
{ scanf("%d",&a[t]);
sum+=a[t];
}
int flag=0;
long long int s=0;
for(int t=0;t<n;t++)
{
if(sum-2*a[t]==0)
{
s++;
flag=1;
}
}
if(flag)
printf("%lld\n",s);
else
{
cout<<"-1"<<endl;
}
}
return 0;
}

little w and Sum(思维)的更多相关文章

  1. hdu 4961 Boring Sum (思维 哈希 扫描)

    题目链接 题意:给你一个数组,让你生成两个新的数组,A要求每个数如果能在它的前面找个最近的一个是它倍数的数,那就变成那个数,否则是自己,C是往后找,输出交叉相乘的和 分析: 这个题这种做法是O(n*s ...

  2. ACM-ICPC 2018 南京赛区网络预赛 J Sum (思维+打表)

    https://nanti.jisuanke.com/t/30999 题意 f(i)表示i能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子的方案数.每次给出n,求∑(n,i=1)f ...

  3. HDU6058 Kanade's sum(思维 链表)

    Kanade's sum Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad) D. Divide and Sum (思维,数学,逆元)

    题意:有一个长度为\(2n\)数组,从中选分别选\(n\)个元素出来组成两个序列\(p\)和\(q\),(\(p\)和\(q\)中只要有任意一个元素在\(a\)的原位置不同,就算一个新的情况),选完后 ...

  5. HDU 5776 sum (思维题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5776 题目让你求是否有区间的和是m的倍数. 预处理前缀和,一旦有两个数模m的值相同,说明中间一部分连续 ...

  6. Codeforces 963A Alternating Sum ( 思维 && 数论 )

    题意 : 题目链接 分析 : Tutorial 讲的很清楚 至于为什么这样去考虑 算是一个经验问题吧 如果一个问题要你给出模意义下的答案 就多考虑一下答案是要用逆元构造出来 也就说明有除法的存在 那么 ...

  7. 51Nod 1110 距离之和最小 V3 中位数 思维

    基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].点P到点P[i]的带权距离 = 实际距离 ...

  8. HDU 1024 Max Sum Plus Plus【动态规划求最大M子段和详解 】

    Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  9. (动态规划)Max Sum Plus Plus--hdu--1024

    http://acm.hdu.edu.cn/showproblem.php?pid=1024 Max Sum Plus Plus Time Limit: 2000/1000 MS (Java/Othe ...

随机推荐

  1. HihoCoder1338 A Game(记忆化搜索)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi and Little Ho are playing a game. There is an integ ...

  2. Android的Notification相关设置

    Android手机:三星Galaxy S6 Android版本:Android 7.0 Android系统自带的本地通知会从顶部Pop下来,用来提示用户有新的消息,然后在Notification栏中停 ...

  3. iOS+PHP图片上传

    这篇博客用于实现iOS客户端通过POST请求,将图片上传到服务器上.服务器端语言采用PHP,服务器环境使用MAMP搭建.先使用浏览器测试图片是否可以上传,浏览器测试成功之后再测试iOS客户端是否可以成 ...

  4. Wireshark抓取本地Tcp包(任何数据包)

    没有任何一个程序员在做项目的时候不会遇到网络编程的问题,要解决这些问题除了对各种网络协议深入了解之外,还需要掌握各种网络分析工具的用法,不用多说wireshark绝对是这方面的翘楚,可惜的是,wire ...

  5. Python:模块详解及import本质

    转于:http://www.cnblogs.com/itfat/p/7481972.html 博主:东大网管 一.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能), ...

  6. ZAB与Paxos算法的联系与区别

    ZAB协议并不是Paxos算法的一个典型实现,在讲解ZAB和Paxos之间的区别之前,我们首先来看下两者的联系. 两者都存在一个类似于Leader进程的角色,由其负责协调多个Follow进程的运行. ...

  7. Python知识点: os.popen

    用例:f = os.popen("%s %s %s" % ("pkg-config", " ".join(args), mod)) pope ...

  8. spring--设置注入VS构造注入

    1.在传统的程序设计中,调用亲自创建被调用者的实例,即由程序控制“对象之间的依赖关系”,这种方式的耦合度比较高:控制反转就是将由程序控制的“对象间的依赖关系”转交给Ioc容器来进行控制,被调用者的实例 ...

  9. 转载:PLSQL Developer使用技巧整理

    Shortcut(快捷方式): Edit/Undo     Ctrl+Z Edit/Redo     Shift+Ctrl+Z Edit/PL/SQL Beautifier  Ctrl+W   (自定 ...

  10. qtp重定义数组大小

    a dim arr1() ) a  dim arr() ReDim arr(a) arr arr ) arr For each i in arr     print arr(i) Next