2017NOIp 普及组第二题 图书管理员
2017-11-22 16:53
302 查看
题目描述
图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写 一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他 需要的书,请输出-1。
这题个人用的是排序和字符串的做法
先排序
在过程中拉两个数进去比较尾数
若相等就输出然后跳到下一个数
若没有找到别忘了输出-1
图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写 一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他 需要的书,请输出-1。
这题个人用的是排序和字符串的做法
先排序
在过程中拉两个数进去比较尾数
若相等就输出然后跳到下一个数
若没有找到别忘了输出-1
var n,m,i,j:longint; a:array[0..1001] of longint; d:array[0..1001,1..2] of longint; procedure qsort(l,r:longint); var i,j,key,t:longint; begin i:=l; j:=r; key:=a[(l+r) div 2]; repeat while a[i]<key do inc(i); while a[j]>key do dec(j); if i<=j then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; inc(i); dec(j); end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r); end; procedure find(ans,w:longint); var i,tot,len,j:longint; s,s2:string; begin for i:=1 to n do begin str(a[i],s); len:=length(s); if len>=w then begin for j:=1 to len-w do delete(s,1,1); str(ans,s2); if s2=s then begin writeln(a[i]); exit; end; end; end; writeln('-1'); end; begin readln(n,m); for i:=1 to n do readln(a[i]); qsort(1,n); for i:=1 to m do begin readln(d[i,1],d[i,2]); find(d[i,2],d[i,1]); end; end. 输入输出样例 输入样例#1: 5 5 2123 1123 23 24 24 2 23 3 123 3 124 2 12 2 12 输出样例#1: 23 1123 -1 -1 -1
相关文章推荐
- 【NOIP 2017普及组】 图书管理员
- ◆竞赛题目◆◇NOIP 2017 普及组◇ 图书管理员
- 【NOIP2017普及组正式赛】 图书管理员
- 【NOIP普及组2017】图书管理员Librarian
- 【NOIP2017】图书管理员
- NOIP 2017 普及组 图书馆员
- NOIP 2017 普及组 棋盘
- [NOIP2017普及组]——棋盘
- NOIP2017普及组解题报告
- 沐枫NOI 2842. 图书管理员(2017年普及组2) 暴力
- NOIP2017棋盘(普及T3)
- 校门外的树(NOIP2005复赛 普及组 第二题)
- 2017NOIP普及模拟赛题解报告
- NOIP2017普及组翻车记
- JZOJ(中山纪中) 2018.01.30【NOIP普及组】模拟赛D组 第二题
- [NOIP2017普及组]跳房子
- NOIP2017跳房子(普及T4)
- NOIP2005-普及组复赛-第二题-校门外的树
- NOIP 2017 普及组 初赛
- 2017NOIP普及组 赛前心得