一、[题目] 数列特征2
时间限制:1.0s 内存限制:512.0MB
问题描述
给出n个数,找出这n个数的第二大值,第二小值,平方和。
输入格式
第一行为整数n,表示数的个数。(2<=n<=100)
第二行有n个数,为给定的n个数,每个数的绝对值都小于1000。
输出格式
输出三行,每行一个整数。第一行表示这些数中的第二大值,第二行表示这些数中的第二小值,第三行表示这些数的平方和。
样例输入
5
100 100 -30 30 1
样例输出
100
1
21801
二、[代码]:
PS. 数列特征2 是上一道题 数列特征1 的变形,题目由原来的求最值变化成了求第二最值,这样一来擂台法明显不管用了,这里我们就需要利用到排序算法来对数据进行先行排序,排序后的数列我们不难得出第二最值,以下列出我的解法。
算法一: 排序最值法(利用C快速排序库函数qsort())
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{ return *(int*)a-*(int*)b;
} int main()
{ int h=0,t,n,m,a[100]; scanf("%d",&n); m=n; while(n--){ scanf("%d",&t); h+=t*t; a[n]=t;} qsort(a,m,4,cmp); printf("%d\n%d\n%d\n",a[m-2],a[1],h);return 0;
}
欢迎评论和转载,转载请注明文章出处,我对此表示最真诚的敬意!