CCF201403-1
来源:互联网 发布:qq微信哪个有价值知乎 编辑:程序博客网 时间:2024/05/29 01:54
相反数
问题描述
有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。
输入格式
第一行包含一个正整数 N。(1 ≤ N ≤ 500)。
第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。
输出格式
只输出一个整数,即这 N 个数中包含多少对相反数。
样例输入
5
1 2 3 -1 -2
样例输出
2
问题分析:
方法一:
#include <iostream>#define M 501//相反数using namespace std;int main(int argc, char *argv[]) { int a[M],N,count=0; cin>>N; for(int i=0;i<N;i++){ cin>>a[i]; } for(int i=0;i<N;i++){ for(int j=i+1;j<N;j++){ if(a[i]+a[j]==0){//互为相反数,相加为零 count++; } } } cout<<count<<endl; return 0;}
方法二:
#include <iostream>#include <map>#define M 501//相反数using namespace std;int main(int argc, char *argv[]) { map<int,int>m;//第一个类型的键类型,第二个是值类型 int N,num,count=0; cin>>N; for(int i=0;i<N;i++){ cin>>num; //如果容器中存在按-num索引的元素,则返回指向该元素的迭代器。 //如果不存在,则返回超出末端迭代器m.end()。 if(m.find(-num)==m.end()){ //数字num的数量+1 m[num]++; } else count++; } cout<<count<<endl; return 0;}
方法三:
#include <iostream>#include <cstring>#define M 501#define N 1000//相反数using namespace std;int main(int argc, char *argv[]) { int n,num,minus,count=0; int a[N*2+1]; //变量初始化:清零 memset(a,0,sizeof(a)); cin>>n; for(int i=0;i<n;i++){ cin>>num; //值映射:从-1000<=v<=1000映射为0<=v'<=2000 minus=N-num; num+=N; //判断负值是否已经存在 if(a[minus]==1){ count++; } //num存在,进行标记 a[num]=1; } cout<<count<<endl; return 0; }
阅读全文
0 0
- ccf201403-1
- CCF201403-1
- CCF201403(1,2)
- CCF201403(1)相反数
- CCF201403-1-相反数
- CCF201403-1 相反数 桶签到
- CCF201403-1 相反数(尝试)
- CCF201403-1 相反数(100分)
- CCF201403-1 相反数(解法二)(100分)
- CCF201403-1 相反数(解法三)(100分)
- CCF201403试题
- ccf201403-2
- CCF201403-2 窗口
- ccf201403-2窗口
- CCF201403-3命令行选项
- CCF201403-4无线网络
- CCF201403-5 任务调度
- CCF201403-2 窗口
- JAVA第四次作业(2接口练习题)
- 【题目】洛谷P2307 迷宫
- java链表与二叉树
- Linux网络编程(未完)
- 指针和引用的区别
- CCF201403-1
- 文章标题
- 关于支配点(必经过点)的人生经验
- Convert OpenCV (iplImage) to PyQt5 QImage/QPixmap in Python
- Google子公司发布机器人 黑科技不输Atlas!
- 这只阿尔法狗已被得力驯化,请查收
- 挑战野生动物摄影 快无边界vivo Xplay5带你纵情非洲
- 质因数相关
- [USACO14OPEN]GPS的决斗Dueling GPS's