2014ACM集训13级PK赛2-Median
2014-03-09 22:10
357 查看
Description
A median is described as the numeric value separating the higher half of a list, from the lower half. The median of a finite list of numbers can be found by arranging all the elements from lowest value to highest value and picking the middle one. If there
is an even number of elements, the median is then defined to be the mean of the two middle values. Now, could you write a program to help to find the median?
Input
There are multiple test cases. The first line of input is an integer T ≈ 100 indicating the number of test cases.
The first line of each test is an integer 0 < n < 500 indicating the number of elements. The second line consists of n numbers, the elements of the list, whose absolute values are
smaller than 1,000,000.
Output
For each test case, output the median, with 3 decimal digits.
Sample Input
Sample Output
0.00055.1505.000
References
http://en.wikipedia.org/wiki/Median
A median is described as the numeric value separating the higher half of a list, from the lower half. The median of a finite list of numbers can be found by arranging all the elements from lowest value to highest value and picking the middle one. If there
is an even number of elements, the median is then defined to be the mean of the two middle values. Now, could you write a program to help to find the median?
Input
There are multiple test cases. The first line of input is an integer T ≈ 100 indicating the number of test cases.
The first line of each test is an integer 0 < n < 500 indicating the number of elements. The second line consists of n numbers, the elements of the list, whose absolute values are
smaller than 1,000,000.
Output
For each test case, output the median, with 3 decimal digits.
Sample Input
3 1 0.0 4 1.0 1000.3 100.2 10.1 5 2.0 3.0 5.0 7.0 11.0
Sample Output
0.00055.1505.000
References
http://en.wikipedia.org/wiki/Median
#include <stdio.h> #include <stdlib.h> int cmp (const void *a,const void *b) { return *(double *)a - *(double *)b; } double num[1000]; int main() { int N; scanf ("%d",&N); while (N--) { int n,i; scanf ("%d",&n); for (i = 0;i < n;i++) scanf ("%lf",&num[i]); qsort(num,n,sizeof (double),cmp); if (n % 2) { int z = ((n - 1) / 2); printf ("%.3lf\n",num[z]); }else { int z1 = n / 2 - 1; int z2 = z1 + 1; printf ("%.3lf\n",(num[z1] + num[z2])/2); } } return 0; }
相关文章推荐
- 2014ACM集训13级PK赛3-Draw Something Cheat
- 2014ACM集训13级PK赛4-Second-price Auction
- 2014ACM集训13级PK赛3-Modular Inverse
- 2014ACM集训13级PK赛4-80ers' Memory
- 2014ACM集训13级PK赛3-Yet Another Story of Rock-paper-scissors
- 2014ACM集训13级PK赛4-A Stack or A Queue?
- 2014ACM集训13级PK赛3-Break Standard Weight
- 2014ACM集训13级PK赛4-K-Nice
- 2014ACM集训13级PK赛4-Light Bulb
- 2014ACM集训13级PK赛2-Who is Older?
- 2014ACM集训13级PK赛3-Friends
- 2014ACM集训13级PK赛2-Somali Pirates
- 2014ACM集训13级PK赛3-Hard to Play
- 2014ACM集训13级PK赛2-An Awful Problem
- 2014ACM集训13级PK赛3-Java Beans
- 2014ACM集训13级PK赛5- Accurately Say "CocaCola"!
- 2014ACM集训13级PK赛2-Wu Xing
- 2014ACM集训13级PK赛5-Easy Task
- 2014ACM集训13级PK赛2-Ordinal Numbers
- 2014ACM集训13级PK赛5-Faster, Higher, Stronger