CCF - 201403-1 - 相反数

问题描述

试题编号: 201403-1
试题名称: 相反数
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述

  有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。

输入格式

  第一行包含一个正整数 N。(1 ≤ N ≤ 500)。
  第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。

输出格式

  只输出一个整数,即这 N 个数中包含多少对相反数。

样例输入

5
1 2 3 -1 -2

样例输出

2

思路

看似统计问题,问题在于如何统计。
1.使用STL的map进行统计是最为有效的办法;
2.输入值x满足-1000<=x<=1000,由于C/C++没有负数下标,就令y=x+1000,而把x映射为y,满足0<=y<=2000。再通过一个标志数组来进行判断和标记,输入数后则进行标记;
3.输入整数各不相同,问题变得稍微简单一些,可以只用标志数组解决。

代码

#include<iostream>
#include<map>
using namespace std;
int main()
{
    int i,n,b,sum;
    map<int,int>a;
    scanf("%d",&n);
    for(sum=0,i=1;i<=n;i++)
    {
        scanf("%d",&b);
        if(a.find(-b)==a.end())
            a[b]++;
        else
            sum++;
    }
    printf("%d\n",sum);
    return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
    int i,n,sum,a[2001],b;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    for(sum=0,i=0;i<n;i++)
    {
        scanf("%d",&b);
        if(a[1000-b]!=0)
            sum++;
        a[b+1000]++;
    }
    printf("%d\n",sum);
    return 0;
}
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    int i,n,sum,a[1001],b;
    scanf("%d",&n);
    memset(a,0,sizeof(a));
    for(sum=0,i=0;i<n;i++)
    {
        scanf("%d",&b);
        if(a[abs(b)]!=0)
            sum++;
        a[abs(b)]++;
    }
    printf("%d\n",sum);
    return 0;
}
时间: 2024-10-19 04:48:51

CCF - 201403-1 - 相反数的相关文章

CCF系列之相反数(201403-1)

试题名称: 相反数 试题编号: 201403-1时间限制: 1.0s 内存限制: 256.0MB 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 样例输入 51 2 3 -1 -2 样例输出 2 解题思路: 代

CCF题目:相反数

问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 样例输入 5 1 2 3 -1 -2 样例输出 2 -------------------------------------------------------

CCF认证之——相反数

这道题目非常简单! #include<iostream> using namespace std; int main() { int i,j,num[1000],n,count=0; cin >> n; for (i = 0; i < n; i++) { cin >> num[i]; } for (i = 0; i < n; i++) { for (j = i; j < n; j++) { if (num[i] + num[j] == 0) count

CCF模拟题 相反数

相反数 时间限制: 1.0s 内存限制: 256.0MB 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 样例输入 51 2 3 -1 -2 样例输出 2 解题:... 1 #include <bits/std

【CCF】找相反数

题目1相反数 时间限制:1秒空间限制:256MB 问题描述 有N个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a和?a为一对相反数). 输入格式 第一行包含一个正整数N.(1≤N≤500). 第二行为N个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同. 输出格式 只输出一个整数,即这N个数中包含多少对相反数. 输入样例 5 123-1-2 输出样例 2 ① 链表法 #include<iostream> #include<time.h>

【CCF】相反数

问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 样例输入 5 1 2 3 -1 -2 样例输出 2 #include <iostream> using namespace std; int N = 1000;

ccf 相反数

问题描述 问题描述 试题编号: 201403-1 试题名称: 相反数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 样例输入 5 1 2 3 -1

首届CCF真题1-相反数

问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对 相反数(a 和 −a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1 ≤ N ≤ 500). 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过 1 000,保证这些整数各不相同. 输出格式 只输出一个整数,即这 N 个数中包含多少对相反数. 输入样例 5 1 2 3 -1 -2 输出样例 2  1 #include <iostream> 2 #include <map> 3 4 u

CSP201403-1:相反数

引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试,针对计算机软件开发.软件测试.信息管理等领域的专业人士进行能力认证.认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象. 问题描述 有 N 个非零且各不相同的整数.请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数). 输入格式 第一行包含一个正整数 N.(1