little w and Sum(思维)
链接: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(思维)的更多相关文章
- hdu 4961 Boring Sum (思维 哈希 扫描)
		题目链接 题意:给你一个数组,让你生成两个新的数组,A要求每个数如果能在它的前面找个最近的一个是它倍数的数,那就变成那个数,否则是自己,C是往后找,输出交叉相乘的和 分析: 这个题这种做法是O(n*s ... 
- ACM-ICPC 2018 南京赛区网络预赛 J Sum (思维+打表)
		https://nanti.jisuanke.com/t/30999 题意 f(i)表示i能拆分成两个数的乘积,且要求这两个数中各自都没有出现超过1次的质因子的方案数.每次给出n,求∑(n,i=1)f ... 
- HDU6058 Kanade's sum(思维 链表)
		Kanade's sum Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ... 
- Codeforces Round #680 (Div. 2, based on Moscow Team Olympiad)  D. Divide and Sum  (思维,数学,逆元)
		题意:有一个长度为\(2n\)数组,从中选分别选\(n\)个元素出来组成两个序列\(p\)和\(q\),(\(p\)和\(q\)中只要有任意一个元素在\(a\)的原位置不同,就算一个新的情况),选完后 ... 
- HDU 5776 sum (思维题)
		题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5776 题目让你求是否有区间的和是m的倍数. 预处理前缀和,一旦有两个数模m的值相同,说明中间一部分连续 ... 
- Codeforces 963A Alternating Sum ( 思维 && 数论 )
		题意 : 题目链接 分析 : Tutorial 讲的很清楚 至于为什么这样去考虑 算是一个经验问题吧 如果一个问题要你给出模意义下的答案 就多考虑一下答案是要用逆元构造出来 也就说明有除法的存在 那么 ... 
- 51Nod 1110 距离之和最小 V3 中位数 思维
		基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].点P到点P[i]的带权距离 = 实际距离 ... 
- 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 ... 
- (动态规划)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 ... 
随机推荐
- HBase的bulkLoad
			HBase的BulkLoad有两种方式: thinrow的机制是flatmap把cell的信息进行flatmap:适合少于1万列的数据集:thinrow的涵义就是少行多列: bulkload的机制则是 ... 
- const关键字祥解
			为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ... 
- java代码简单练习
			总结: package com.ds; import java.awt.Color; import java.awt.FlowLayout; import javax.swing.JFrame; im ... 
- Java常见设计模式之单例模式
			1.何为单例模式? 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的 ... 
- mariadb复制
			实验环境:CentOS7 #安装mariadb-server #主数据库: [root@~ localhost]#vim /etc/my.cnf.d/server.cnf [mysqld] skip_ ... 
- 0010_while循环
			while 条件: 代码块 break:跳出循环语句 continue:跳出本次循环,进入下一次循环. __author__ = 'qq593' #!/usr/bin/env python #-*- ... 
- Learning Python 009 dict(字典)和 set
			Python dict(字典)和 set dict (字典)是什么东西 dict全称dictionary.为什么这个数据结构取名叫dict.因为dict的实现原理和查字典是一样的.dict使用了键-值 ... 
- 26、HDF5 文件格式简介
			转载:庐州月光 http://www.cnblogs.com/xudongliang/p/6907733.html 三代测序下机的原始数据不再是fastq格式了,而是换成了hdf5 格式,在做三代数据 ... 
- JSK 糟糕的bug
			传送门 题目居然复制不了(QAQ) 分析 TrieJSK已经2比较详细了,就不再单独写博客了,此题相较于Trie模板有一点不同,此题要求比较前缀却没有规定前面是后面的前缀还是后面是前面的前缀,所以我们 ... 
- LENOVO服务器批量升级BMC固件
			需求:通过服务器远程管理IP批量升级IMM.UEFI固件 工具:asu64.ipmitool.iflash64.cdc_interface.sh 下载:http://pan.baidu.com/s/1 ... 
