CSP201403-1 相反数

题目传送门


题目分析
  set<int>类型的变量存储的数据是int类型的,它能自动去重并且排序。比如输入的数据是3 2 6 3 1 7 2,那么set<int>最终存储的是1 2 3 6 7
  对于输入的每一个数,先判断它的绝对值是否在set<int> numbers中,如果在,则一定能说明这是一对相反数,因为题目中说输入的所有数据各不相同,那么两个数取绝对值之后相等了,这两个数一定是相反数;如果不在numbers中,则将这个数的绝对值插入到numbers中。


源代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int N, num, amount = 0;
	set<int> numbers;
	cin >> N;
	while (N--) {
		cin >> num;
		if (numbers.count(abs(num)))
			amount++;
		else
			numbers.insert(abs(num));
	}
	cout << amount;
}

题目

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

发布了172 篇原创文章 · 获赞 81 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43074474/article/details/104740817