【NOIP2017普及组正式赛】 图书管理员

这一题有很多人都搞不懂意思。但是,只要是认真看了题的人,就不会有什么错了!
这一题直接用暴力是可以过的,不需要wjq讲的什么字典树(不过空闲者可“自残”一下)
var
        ycl:array[1..8] of longint=(10,100,1000,10000,100000,1000000,10000000,100000000);
        a:array[0..1000] of longint;
        b:array[0..1000,1..2] of longint;
        n,q,i,j:longint;
procedure qsort(l,r:longint);
var
        i,j,mid,t:longint;
begin
        i:=l;
        j:=r;
        mid:=a[(l+r) div 2];
        repeat
                while a[i]<mid do inc(i);
                while a[j]>mid 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 i<r then qsort(i,r);
        if l<j then qsort(l,j);
end;
begin
        assign(input,'librarian.in');reset(input);
        assign(output,'librarian.out');rewrite(output);
        readln(n,q);
        for i:=1 to n do
                read(a[i]);
        for i:=1 to q do
                read(b[i,1],b[i,2]);
        qsort(1,n);
        for i:=1 to q do
        begin
                j:=1;
                while (a[j] mod ycl[b[i,1]]<>b[i,2]) and (j<=n) do inc(j);
                if j>n then writeln(-1)
                else writeln(a[j]);
        end;
        close(input);
        close(output);
end.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值