CCF真题 中间数 题解
2018-03-15 09:39
309 查看
试题编号: 201612-1
试题名称: 中间数
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
给定一个整数序列,请找出这个整数序列的中间数的值。
输入格式
输入的第一行包含了一个整数n,表示整数序列中数的个数。
第二行包含n个正整数,依次表示a1, a2, …, an。
输出格式
如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。
样例输入
6
2 6 5 6 3 5
样例输出
5
样例说明
比5小的数有2个,比5大的数也有2个。
样例输入
4
3 4 6 7
样例输出
-1
样例说明
在序列中的4个数都不满足中间数的定义。
样例输入
5
3 4 6 6 7
样例输出
-1
样例说明
在序列中的5个数都不满足中间数的定义。
评测用例规模与约定
对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
思路:
用数组存起来,先对这个数组排序,找到它的中间位置,数组个数为奇数时mid,判断小于它的个数和大于它的个数是否相同;数组个数为偶数时mid1,mid2,判断条件同奇数。.
Code:
试题名称: 中间数
时间限制: 1.0s
内存限制: 256.0MB
问题描述:
问题描述
在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
给定一个整数序列,请找出这个整数序列的中间数的值。
输入格式
输入的第一行包含了一个整数n,表示整数序列中数的个数。
第二行包含n个正整数,依次表示a1, a2, …, an。
输出格式
如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。
样例输入
6
2 6 5 6 3 5
样例输出
5
样例说明
比5小的数有2个,比5大的数也有2个。
样例输入
4
3 4 6 7
样例输出
-1
样例说明
在序列中的4个数都不满足中间数的定义。
样例输入
5
3 4 6 6 7
样例输出
-1
样例说明
在序列中的5个数都不满足中间数的定义。
评测用例规模与约定
对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
思路:
用数组存起来,先对这个数组排序,找到它的中间位置,数组个数为奇数时mid,判断小于它的个数和大于它的个数是否相同;数组个数为偶数时mid1,mid2,判断条件同奇数。.
Code:
//20min #include<iostream> #include<algorithm> #include<fstream> using namespace std; const int maxn = 1010; int main(){ // fstream cin("a.txt"); int n,a[maxn]; int n1 = 0,n2 = 0,mid,mid1,mid2; cin>>n; for(int i = 0; i < n; ++i){ cin>>a[i]; } sort(a, a + n); if(n % 2 == 1){ mid = a[n / 2]; for(int i = 0; i < n; ++i){ if(mid > a[i]) n1++; if(mid < a[i]) n2++; } if(n1 == n2) { cout<<mid<<endl; return 0; } } else{ mid1 = a[n / 2]; mid2 = mid1 + 1; n1 = n2 = 0; for(int i = 0; i < n; ++i){ if(mid1 > a[i]) n1++; if(mid1 < a[i]) n2++; } if(n1 == n2){ cout<<mid1<<endl; return 0; 928d } n1 = n2 = 0; for(int i = 0; i < n; ++i){ if(mid2 > a[i]) n1++; if(mid2 < a[i]) n2++; } if(n1 == n2){ cout<<mid2<<endl; return 0; } } cout<<"-1"<<endl; return 0; }
相关文章推荐
- ccf真题-201604-3-.路径解析-题解
- CCF真题-201612-1-中间数
- CCF 历年真题之中间数(_1612_1_MiddleNum.java)参考答案
- CCF CSP真题 出现次数最多的数 题解
- CCF201312真题及题解(能力有限,欢迎交流)
- CCF CSP真题 相反数 题解
- CCF真题 图像旋转 题解
- ccf认证考试真题-201609-2-火车购票题解
- CCF 真题 数列分段 题解
- CCF真题——Z字形扫描(java)
- 给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1(ccf真题)
- CCF 201409-1 相邻数对 题解
- CCF真题之相反数
- 2017第八届蓝桥杯 C/C++C组真题及题解
- CCF历届真题之门禁系统(_1412_1_AccessControlSystem.java)
- 求中间数:CCF计算机职业资格认证考试模拟试题,编号:201612-1
- CCF CSP试题 201612-1 中间数
- 2017年第八届蓝桥杯 C/C++B组 真题分析与题解(未完待续)
- 【CCF-CSP 201609-01】中间数
- 第十三次CCFCSP认证(2018年3月)真题碰撞的小球