概述
题目描述
图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小 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
最后
以上就是落后宝马为你收集整理的2017NOIp 普及组第二题 图书管理员的全部内容,希望文章能够帮你解决2017NOIp 普及组第二题 图书管理员所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复