P1001 第K极值

P1001 第K极值

时间: 1000ms / 空间: 131072KiB / Java类名: Main

背景

成成第一次模拟赛 第一道

描述

给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n)

输入格式

输入格式:

第一行为2个数n,k(含义如上题)

第二行为n个数,表示这个序列

输出格式

输出格式:

如果m为质数则

第一行为‘YES‘(没有引号)

第二行为这个数m

否则

第一行为‘NO‘

第二行为这个数m

测试样例1

输入

5 2

1 2 3 4 5

输出

YES

2

备注

对于第K大的详细解释:

如果一个序列为1 2 2 2 2 3

第1大 为3

第2大 为2

第3大 为2

第4大 为2

第5大 为1

第K小与上例相反

另外需要注意的是

最小的质数是2,如果小于2的话,请直接输出NO

原创……

-------------------------------------------------

刚开始打了一个素数表,  结果提示Runtime Error ,就通过了几组数据。。

然后改方法直接判断是不是素数了。。。。

-------------------------------------------------------------------------------------------

import java.util.Arrays;
import java.util.Scanner;
public class Main {

    static boolean is_prime(int n){
        if(n<=1) return false;
        if (n==2)return true;
         for(int i=3;i<=Math.sqrt(n);i++){
             if(n%i==0) return false;
         }
         return true;

    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            int n=sc.nextInt();

            int a[]=new int[n];
            int k=sc.nextInt();
            for(int i=0;i<n;i++)
                a[i]=sc.nextInt();
            Arrays.sort(a);
            int tmp=a[k-1];
            int tmp1=a[n-k];
            if(tmp1-tmp<=1){
                System.out.println("NO");
            }
            else{
            if(is_prime(tmp1-tmp))
                System.out.println("YES");
            else
            System.out.println("NO");

            }
            System.out.println(tmp1-tmp);
        }
        sc.close();

    }

}
时间: 2024-10-05 20:18:30

P1001 第K极值的相关文章

P1001 第K极值【tyvj】

1 /*========================================== 2 P1001 第K极值 3 内存限制 128MB 代码限制 64KB 4 描述 Description 5 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是 6 小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去 7 第k小的数字的值m,并判断m是否为质数.(0<k<=n) 8 输入格式 InputFormat 9 输入格式: 1

P1163 第K极值 - Smart Online Judge

题目ID:1163 题目名称:第K极值 有效耗时:496 ms 空间消耗:740 KB 程序代码: 1 #include<iostream> 2 #include<vector> 3 #include<algorithm> 4 using namespace std; 5 6 vector<long long> list; 7 8 bool isprime(long long a){ 9 if(a<2) 10 return false; 11 if(a

[Tyvj1001]第K极值 (贪心?模拟)

考前打tyvj的水题 题目描述 给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数.(0<k<=n) 输入格式 输入格式:第一行为2个数n,k(含义如上题)第二行为n个数,表示这个序列 输出格式 输出格式:如果m为质数则第一行为'YES'(没有引号)第二行为这个数m否则 第一行为'NO'第二行为这个数m 测试数据 5 2 1 2 3 4 5

融合后如何如何后如何如何

http://ypk.39.net/search/all?k=%A6%C6%B6%F5%D6%DD%C4%C4%C0%EF%C2%F2%C3%C0%C9%B3%CD%AAQ%A3%BA%A3%B8%A3%B6%A3%B3%A3%B9%A3%B0%A3%B2%A3%B9%A3%B6%A3%B2%A1%C6 http://ypk.39.net/search/all?k=%A8z%BE%A3%C3%C5%C4%C4%C0%EF%C2%F2%C3%C0%C9%B3%CD%AAQ%A3%BA%A3%B8%

哥哥ukulele

http://ypk.39.net/search/all?k=%A1%FB%C6%CE%CC%EF%C4%C4%C0%EF%D3%D0%B0%B2%C0%D6%CB%C0%D2%A9%C2%F4Q%A3%BA%A3%B8%A3%B6%A3%B3%A3%B9%A3%B0%A3%B2%A3%B9%A3%B6%A3%B2%A1%BC http://ypk.39.net/search/all?k=%A1%D3%B8%A3%C7%E5%C4%C4%C0%EF%D3%D0%B0%B2%C0%D6%CB%C0

Machine Learning 学习笔记 (2) —— 另一种寻找极值的方法:牛顿法

[总目录]http://www.cnblogs.com/tbcaaa8/p/4415055.html 1. 用牛顿法解方程 牛顿法是一种求解方程的迭代算法,也可以用于方程组的求解.其思想是利用方程(尤其是非线性方程)的线性部分,对原方程进行近似.不失一般性,考虑方程f(x)=0.对f(x)在x=t处进行泰勒展开,可得f(x)=f(t)+f'(t)(x-t)+... 取线性部分代替f(x),带入方程f(x)=0,可得f(t)+f'(t)(x-t)=0 ,进而解出x=t-f(t)/f'(t).将方程

机器学习---K最近邻(k-Nearest Neighbour,KNN)分类算法

K最近邻(k-Nearest Neighbour,KNN)分类算法 1.K最近邻(k-Nearest Neighbour,KNN) K最近邻(k-Nearest Neighbour,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别.用官方的话来说,所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实

从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 从K近邻算法.距离度量谈到KD树.SIFT+BBF算法 前言 前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1.KD树:2.神经网络:3.编程艺术第28章.你看到,blog内的文章与你于别处所见的任何都不同.于是,等啊等,等一台电脑,只好等待..”.得益于田,借了我一台电脑(借他电脑的时候,我连表示感谢,他说“能找到工作全靠你的博客,这点儿小忙还说,不地道”,有的时候,稍许感受到受人信任也是一种压力,愿我不辜负大家对我的信任)

ML: 聚类算法R包-K中心点聚类

K-medodis与K-means比较相似,但是K-medoids和K-means是有区别的,不一样的地方在于中心点的选取,在K-means中,我们将中心点取为当前cluster中所有数据点的平均值,在 K-medoids算法中,我们将从当前cluster 中选取这样一个点--它到其他所有(当前cluster中的)点的距离之和最小--作为中心点.K-medodis算法不容易受到那些由于误差之类的原因产生的脏数据的影响,但计算量显然要比K-means要大,一般只适合小数据量. K-medoids