您的位置:首页 > 其它

NOIP 2017 普级组 图书管理员 librarian

2017-11-22 16:29 176 查看






题解:

为啥要用字符串,啥,字符树?不存在的。

你看看数据,不超过10^7,果断暴力

预处理出10^1,10^2,10^3……10^8

给出需求码长度x,跟需求码y

你就把所有的编码mod 10^x 的值看是否等于y

在满足的数中找最小值即可。

时间复杂度:O(NQ)

var
a:array [0..1001] of longint;
num:array [1..8] of longint;
n,q:longint;

function min(aa,bb:longint):longint;
begin
if aa<bb then exit(aa);
exit(bb);
end;

procedure init;
var
i:longint;
begin
readln(n,q);
for i:=1 to n do
readln(a[i]);
num[1]:=10;
for i:=2 to 8 do
num[i]:=num[i-1]*10;
end;

procedure main;
var
cmin,i,j,x,y:longint;
begin
for i:=1 to q do
begin
readln(x,y);
cmin:=maxlongint;
for j:=1 to n do
if a[j] mod num[x]=y
then cmin:=min(cmin,a[j]);
if cmin=maxlongint
then writeln('-1')
else writeln(cmin);
end;
end;

begin
init;
main;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: