0
点赞
收藏
分享

微信扫一扫

【CCF】相反数


试题编号:

201403-1

试题名称:

相反数

时间限制:

1.0s

内存限制:

256.0MB

问题描述:

问题描述

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

输入格式

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

输出格式

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

样例输入

5
1 2 3 -1 -2

样例输出

2

解题思路:

这第一题真的都很相似啊,无脑for循环来暴力吧,如果在数组中存在相反数则count++,需要注意的是,count记录的是相反数的个数,并不是相反数的对数,最后输出的时候需要输出的是count/2。

100分代码:

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    int a[n];
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    int count = 0;  //用来记录数组中有多少个数有相反数
    //暴力吧  无脑for循环
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if(a[i]==-a[j])      //判断是不是相反数
            {
                count++;
            }
        }
    }
    cout << count/2 << endl;    //count除以2才是数组中相反数的对数
    return 0;
}

———————————————2019.09.07更新—————————————————

原谅我当年写的代码这么丑陋,今天用set来重新写了一遍。

#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n,cnt = 0;
    cin >> n;
    set<int> s;
    while(n--)
    {
        int _;
        cin >> _;
        s.insert(_);
        if(s.count(-_) == 1)
        {
            cnt++;
        }
    }
    cout << cnt << endl;
    return 0;
}

 

举报

相关推荐

0 条评论