NOIP 2017 普级组 图书管理员 librarian

这里写图片描述
这里写图片描述
这里写图片描述

题解:

为啥要用字符串,啥,字符树?不存在的。
你看看数据,不超过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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值