zoukankan      html  css  js  c++  java
  • CODE[VS] 1979 第K个数

    题目描述 Description

    给定一个长度为N(0<n<=10000)的序列,保证每一个序列中的数字a[i]是小于maxlongint的非负整数 ,

    编程要求求出整个序列中第k大的数字减去第k小的数字的值m,并判断m是否为质数。(0<k<=n)

    输入描述 Input Description

    第一行为2个数n,k(含义如上题)
    第二行为n个数,表示这个序列

    输出描述 Output Description

    如果m为质数则
    第一行为'YES'(没有引号)
    第二行为这个数m
    否则 
    第一行为'NO'
    第二行为这个数m

    样例输入 Sample Input
    5 2
    1 2 3 4 5
    样例输出 Sample Output
    YES
    2
    数据范围及提示 Data Size & Hint

    20%数据满足0<n<=10
    50%数据满足0<n<=5000
    100%数据满足0<n<=10000

    刚开始觉得挺简单的,

    就,,求出来判断就好了,

    代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std;
     7 
     8 int n,a[10002],k;
     9 
    10 bool judge(int x)
    11 {
    12     for(int i=2;i*i<=x;++i)
    13         if(x%i==0) return 0;
    14     return 1;
    15 }
    16 
    17 int main()
    18 {
    19     scanf("%d%d",&n,&k);
    20     for(int i=1;i<=n;++i)
    21         scanf("%d",&a[i]);
    22     sort(a+1,a+n+1);
    23     int q=a[n+1-k]-a[k];
    24     if(q==0) 
    25     {
    26         printf("NO
    0");
    27         return 0;
    28      } 
    29     if(q==1) 
    30     {
    31         printf("NO
    1");
    32         return 0;
    33      } 
    34     if(judge(q))    
    35         printf("YES
    %d",q);    
    36     else printf("NO
    %d",q);
    37     return 0;
    38 }

    但只过了4个点。。。。

    ,,

    wa掉的都是负数吧,,

    居然没想到负数。。

    那,,歧义?

    负质数不算吗?。。。

    这题好像负数都算了吧,

    ,,

    然后交上还t一个点。。

    什么嘛,

    不管了,

    2147483647是梅森质数,

    2^31-1,

    当做常识记住吧,

    不考虑别的了,,

    特判一下吧,,

    AC代码:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std;
     7 
     8 int n,a[10002],k;
     9 
    10 bool judge(int x)
    11 {
    12     for(int i=2;i*i<=x;++i)
    13         if(x%i==0) return 0;
    14     return 1;
    15 }
    16 
    17 int main()
    18 {
    19     scanf("%d%d",&n,&k);
    20     for(int i=1;i<=n;++i)
    21         scanf("%d",&a[i]);
    22     sort(a+1,a+n+1);
    23     int q=a[n+1-k]-a[k];
    24     if(q==0) 
    25     {
    26         printf("NO
    0");
    27         return 0;
    28      } 
    29     if(q==1) 
    30     {
    31         printf("NO
    1");
    32         return 0;
    33      } 
    34      if(q<0)
    35      {
    36          printf("NO
    %d",q);
    37          return 0;
    38      }
    39      if(q==2147483647)
    40      {
    41          printf("YES
    2147483647");
    42          return 0;
    43      }
    44     if(judge(q))    
    45         printf("YES
    %d",q);    
    46     else printf("NO
    %d",q);
    47     return 0;
    48 }

    如果你不开心,那我就把右边这个帅傻子分享给你吧, 

    你看,他这么好看,那么深情的望着你,你还伤心吗? 

    真的!这照片盯上他五秒钟就想笑了。 

    一切都会过去的。

  • 相关阅读:
    python核心编程课后题第二版36页第二章
    Python每个N个字符插入一个符号
    python核心编程课后题第二版97页第五章
    意外的 404 错误
    WCF简单使用(分别部署在控制台和IIS上)
    最近看的项目cakephp
    我正在翻译的CakePHP manual
    C# 高质量编程
    Android 环境搭建
    MVC 读配置文件 多语言
  • 原文地址:https://www.cnblogs.com/Mary-Sue/p/9424715.html
Copyright © 2011-2022 走看看