链家机试题:学生IQ
来源:互联网 发布:智慧眼网络摄像机 编辑:程序博客网 时间:2024/05/22 08:08
题目描述
根据调查,学计算机的学生IQ比较高。举个例子,如果我们把学计算机的一些学生调去学数学,那么
两个班级的学生平均IQ都会提升。
现在给出一群数学班级全体学生的IQ和计算机班级全体学生的IQ,问最多能把几个学计算机的学生调去
学数学,而两个班级的学生平均IQ都有提升呢?
每次只调一个学生,而且每次调配,两个班级的学生平均IQ都要提升。
输入:
第一行:一个正整数N(N<=100),代表数学班级学生的数目。
第二行:有N个正整数,代表每个数学学生的IQ(1~200)。
第三行:一个整数M(M<=100),代表计算机班级学生数目。
第四行:有M个正整数,代表每个计算机班级数学生的IQ(1~200)。
输入数据保证计算机学生平均IQ高于数学学生。
输出:
一个正整数,代表能从计算机调去学数学的学生的个数。
输入示例:
3
3 2 3
3
3 2 5
输出示例:
1
思想:
遍历计算机的每个学生IQ, 这个IQ满足 IQ > 数学班平均IQ && IQ < 计算机平均IQ,对满足条件
的IQ进行以下操作:
1. 把这个计算机的IQ拿出来 放到数学班里去,更新他们的平均成绩;
2. 如果他们的平均成绩均升高,则ans++,
3. 如果没有,则继续遍历下一个计算机IQ。
如果有错,请指出
int main(void){ int M, N; cin >> N; int arrN[105], arrM[105]; int sumN = 0, sumM = 0; for(int i = 0; i < N; ++i) { cin >> arrN[i]; sumN += arrN[i]; } cin >> M; for(int i = 0; i < M; ++i) { cin >> arrM[i]; sumM += arrM[i]; } double aveN = sumN/(double)N; double aveM = sumM/(double)M; double oldAveN = aveN; double oldAveM = aveM; int ans = 0; for(int i = M-1; i >= 0; --i) { if((arrM[i] - oldAveN >= 0)&&(oldAveM - arrM[i] >= 0)) { int tempM = sumM - arrM[i]; int tempN = sumN + arrM[i]; if(((tempM/(double)(M-1)) - aveM) > 0 && ((tempN/(double)(N+1)) - aveN) > 0) { ans++; aveM = tempM/(double)(M-1); aveN = tempN/(double)(N+1); sumM = tempM; sumN = tempN; M--; N++; } } } cout << ans << endl; return 0;}
阅读全文
0 0
- 链家机试题:学生IQ
- IT 面试常见IQ试题
- IQ
- 微软面试题汇总--IQ篇
- 面试题之IQ与逻辑推理题
- 面试题之IQ与逻辑推理题
- 面试题之IQ与逻辑推理题
- IQ面试题程序员文史综合题目
- 面试题之IQ与逻辑推理题
- 微软面试题汇总--IQ篇(转)
- 月薪3万的一道面试题---看看你的IQ
- 18条有趣的微软面试题,自认IQ智商高的朋友来挑战一下吧!
- 18条有趣的微软面试题,自认IQ智商高的朋友来挑战一下吧!
- IQ无限
- IQ天堂
- 考IQ
- IQ题
- IQ测试
- Myeclipse为Java Project配置JRE(或者JDK)环境
- java打印一个菱形
- node点滴
- 高级程序员日常手札C/C++指针使用常见的坑
- 模拟实现栈
- 链家机试题:学生IQ
- 心得——什么是努力
- 432. All O`one Data Structure
- 排列组合,字符串——Killer Names
- 学习下拉刷新和加载等功能
- 20170821
- dp——记忆化搜索——poj 1088
- USB过滤驱动,实现U盘只读控制
- 2017年8月21日