网站备案完才能建站吗,企业微信邮箱登录入口,设计网站企业网站建设公司,网站建设工种题目 
问题描述 
有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 
输入格式 
第一行包含一个正整数 N。(1 ≤ N ≤ 500)。   第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。 
输出…题目 
问题描述 
有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。 
输入格式 
第一行包含一个正整数 N。(1 ≤ N ≤ 500)。   第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。 
输出格式 
只输出一个整数,即这 N 个数中包含多少对相反数。 
样例输入 
5
1 2 3 -1 -2样例输出 
2分析 
用数组a[n]来存n个数。用变量total记录 “相反数” 对数方法1从i0开始遍历数组a然后找到和自身相加为0的情况累加到total。最后的结果是total/2.方法2从i0开始遍历数组a只遍历小于自身的数然后找到和自身相加为0的情况累加到total。最后的结果是total。数据量大时方法1有超时的风险尽量使用方法2。官方给的答案还可以用map不过我没看懂(菜哭.jpg) 
AC代码 
方法1代码 
#include iostream
#includealgorithm
#includestring
using namespace std;
int main()
{int i,j,n,total0;cinn;int a[n];for(i0; in; i){cina[i];}for(i0; in; i){for(j0; jn; j){if(a[i]a[j]0){total;break;}}}couttotal/2;return 0;
}方法2代码 
#include iostream
#includealgorithm
#includestring
using namespace std;
int main()
{int i,j,n,total0;cinn;int a[n];for(i0; in; i){cina[i];}for(i0; in; i){for(j0; jijn; j){if(a[i]a[j]0){total;break;}}}couttotal;return 0;
}如果您有问题或者更好的解法都欢迎在评论区留言o