第21课c++作业

感谢您能抽出几分钟时间来参加本次答题,现在我们就马上开始吧!
01:查找最接近的元素

 描述 在一个非降序列中,查找与给定值最接近的元素。

 

输入

第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。

第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。

 第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。

接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。


输出

m行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。


 样例输入

3 2 5 8 2 10 5


样例输出

 8 5

    ____________
02:二分法求函数的零点


 描述

有函数: f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * x - 121 已知 f(1.5) > 0 , f(2.4) < 0 且方程 f(x) = 0 在区间 [1.5,2.4] 有且只有一个根,请用二分法求出该根。


输入

无。


输出

该方程在区间[1.5,2.4]中的根。要求四舍五入到小数点后6位。


 样例输入

 无


样例输出

不提供

    ____________
08:不重复地输出数


 描述

输入n个数,从小到大将它们输出,重复的数只输出一次。保证不同的数不超过500个。


输入

第一行是一个整数n。1 <= n <= 100000。 之后n行,每行一个整数。整数大小在int范围内。


输出

一行,从小到大不重复地输出这些数,相邻两个数之间用单个空格隔开。


 样例输入

 5 2 4 4 5 1


样例输出

1 2 4 5

    ____________
07:和为给定数


 描述

给出若干个整数,询问其中是否有一对数的和等于给定的数。


 输入

共三行: 第一行是整数n(0 < n <= 100,000),表示有n个整数。 第二行是n个整数。整数的范围是在0到10^8之间。 第三行是一个整数m(0 <= m <= 2^30),表示需要得到的和。


输出

若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出一行No。


 样例输入

4 2 5 1 4 6


样例输出

1 5


提示∶先从小到大排序。设和为sum,顺序搜索第一个数x,二分查找sum-x,如果sun-x存在那么就break;O(nlogn)的算法复杂度,可以应付十万规模数据。

    ____________

4题 | 被引用1次

使用此模板创建