题目链接:
http://www.dotcpp.com/oj/problem.php?id=1268解题思路:
首先,对这组数据进行从小到大排序,拍好后,第k大的数字是a[n-k],可以推一下,第一大是a[n-1],其次a[n-2]........a[n-k],第一小的数字是a[0],而不是a[1],其次a[1],a[2].......a[k-1];temp = a[n-k] - a[k-1]
注意事项:数组最少开到10001,防止溢出,同时要注意temp的条件,是否大于等于2
参考代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#define MAX 10003
using namespace std;
int main()
{
int a[MAX];
int n,k,i;
int temp;
scanf("%d %d",&n,&k);
for(i = 0;i < n;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
temp = a[n-k] - a[k-1];
for(i = 2;i < sqrt(temp);i++)
{
if(temp%i==0) break;
}
if(i>=sqrt(temp)&&temp>=2) printf("YES\n%d",temp);
else printf("NO\n%d",temp);
return 0;
}
0.0分
0 人评分
大神老白 (C语言代码)浏览:642 |
简单的a+b (C语言代码)浏览:598 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:577 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:564 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:560 |
蚂蚁感冒 (C语言代码)浏览:768 |
Hello, world! (C语言代码)浏览:824 |
输出九九乘法表 (C语言代码)浏览:1048 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:1220 |
C语言程序设计教程(第三版)课后习题10.1 (C++代码)浏览:497 |