【图书馆书目检索】解题报告
2011-11-10 09:24
1046 查看
题目描述
图书馆馆长正犯愁呢,原来,有一堆的书要他整理,每本书都有一个书号(<=200000),现在他有一本书,这本书的书号为K(<=200000),现在他要找出一本书号比这本书大的书和书号比这本小的书(但都要最接近图书馆馆长已有的书号),将找到的这两本书的书号加起来,并算出加起来以后的数是否为素数
输入格式
第一行二个数为N,K,表示几本书以及已有书的书号(<=200000)第二行开始有N个整数,表示这些书的书号
输出格式
第一行一个数,表示两本书书号加起来的和第二行一个字符,表示和是否为素数,若是则输出"Y"否则输出"F"(引号不打出)
一道模拟题,我用来练习一下STL。先把k删了,二分搜索堆中找到第一个比k大的,第一个比k小的就用迭代器自减得到。
//#include <iostream>
//using std::cout;
//using std::cin;
#include <cstdio>
#include <cmath>
#include <map>
using std::make_pair;
const long oo = 0x7fff0000;
long n;long k;
std::map<long,long> book;
int main()
{
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
scanf("%ld%ld",&n,&k);
for (long i=1;i<n+1;i++)
{
long a;
scanf("%ld",&a);
book.insert(make_pair(a,a));
}
book.erase(k);
long r = (--book.upper_bound(k))->first;
long l = book.upper_bound(k)->first;
printf("%ld\n",r+l);
long c = r+l;
for (long i=2;i<sqrt(c);i++)
{
if (c%i==0){printf("F");return 0;}
}
printf("Y");return 0;
}
相关文章推荐
- 【模拟】图书馆书目检索
- 【模拟】【RQNOJ】图书馆书目检索
- 【模拟】图书馆书目检索
- 【解题报告】poj openjudge 拼写检查 pku数算mooc 检索
- NIT-OJ-1024-全文检索-解题报告
- 解题报告:HDU_1277 全文检索 字典树
- Pku acm 1579 Function Run Fun 动态规划题目解题报告(二)
- 北邮新生排位赛8解题报告
- [leetcode] 163. Missing Ranges 解题报告
- leetcode解题报告:392. Is Subsequence
- LeetCode 78. Subsets 解题报告
- [Leetcode] 216. Combination Sum III 解题报告
- 补♂课第111场解题报告
- [Leetcode] 222. Count Complete Tree Nodes 解题报告
- [leetcode] 463. Island Perimeter 解题报告
- UVA489解题报告(刽子手游戏)
- POJ1010解题报告
- ZOJ Monthly, July 2010 部分题目解题报告
- YT02-简单数学课后题-1004 The Last Practice -(5.31日-烟台大学ACM预备队解题报告)
- palsquare解题报告