【模拟】图书馆书目检索
题目:图书馆书目检索 rqnoj159
题目描述
图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=200000),现在他有一本书,这本书的书号为K(<=200000),现在他要找出一本书号比这本书大的书和书号比这本小的书(但都要最接近图书馆馆长已有的书号),将找到的这两本书的书号加起来,并算出加起来以后的数是否为素数
输入格式
第一行二个数为N,K,表示几本书以及已有书的书号(<=200000)
第二行开始有N个整数,表示这些书的书号
输出格式
第一行一个数,表示两本书书号加起来的和
第二行一个字符,表示和是否为素数,若是则输出"Y"否则输出"F"(引号不打出)
样例输入
样例输出
题目不用解释了吧,pascal Code
program rqnoj159;
var
  n,k:longint;
  a:array[0..200000+10] of longint;
procedure init;
begin
  assign(input,'rqnoj159.in');
  assign(output,'rqnoj159.out');
  reset(input);
  rewrite(output);
end;
procedure outit;
begin
  close(input);
  close(output);
  halt;
end;
procedure readdata;
begin
end;
procedure swap(var a,b:longint);
var t:longint;
begin
  t:=a;a:=b;b:=t;
end;
procedure qsort(l,r:longint);
var
  i,j:longint;
  x:longint;
begin
  i:=l;j:=r;x:=a[(i+j)div 2];
  repeat
    while a[i]<x do inc(i);
    while a[j]>x do dec(j);
    if i<=j then
    begin
      swap(a[i],a[j]);
      inc(i);dec(j);
    end;
  until i>j;
  if i<r then qsort(i,r);
  if l<j then qsort(l,j);
end;
function ok(x:longint):boolean;
var
  i:longint;
begin
  for i:=2 to x-1 do
  begin
    if x mod i =0 then exit(false);
  end;
  exit(true);
end;
procedure main;
var
  i,sum:longint;
begin
  read(n,k);
  for i:=1 to n do read(a[i]);
  qsort(1,n);
  sum:=0;
  for i:=1 to n do
    if a[i]>=k then
    begin
      inc(sum,a[i-1]);
      break;
    end;
  for i:=n downto 1 do
    if a[i]<=k then
    begin
      inc(sum,a[i+1]);
      break;
    end;
  writeln(sum);
  if ok(sum) then writeln('Y') else writeln('F');
end;
begin
  init;
  readdata;
  main;
  outit;
end.

    ..... 转载请注明出处 ..... http://oijzh.cnblogs.com ..... by jiangzh
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号