#L4909. 「POI2017 R1」整除性 Divisibility

「POI2017 R1」整除性 Divisibility

#49094909. 「POI2017 R1」整除性 Divisibility

题目描述

题目译自 XXIV Olimpiada Informatyczna — I etap Podzielność

最近,Bajtuś 在计算机课上学到了位置计数法。他了解到,人类常用十进制,电脑用二进制,但其实任何大于 11 的自然数 BB 都可以作为计数基础。在这样的系统中,可用数字是 0,1,2,,B2,B10, 1, 2, \ldots, B-2, B-1,一个 kk 位数 ck1ck2c2c1c0c_{k-1} c_{k-2} \ldots c_{2} c_{1} c_{0} 表示:

$c_{k-1} \cdot B^{k-1} + c_{k-2} \cdot B^{k-2} + \ldots + c_{2} \cdot B^{2} + c_{1} \cdot B + c_{0}$

比如,在三进制中,201201 表示 232+03+12 \cdot 3^{2} + 0 \cdot 3 + 1,也就是十进制的 1919(简写为 2013=1910201_{3} = 19_{10})。

Bajtuś 选了个数 BB 作为计数基础,把所有可用数字写在卡片上,有些数字可能重复:对于 i=0,1,,B1i = 0, 1, \ldots, B-1,他有 aia_{i} 张写着 ii 的卡片。他想用这些卡片拼出尽可能大的、能被 B1B-1 整除的数。请你写个程序帮他实现这个目标。这数可能很大,Bajtuś 只想知道某些特定位置的数字即可。注意,正数的写法不能以 00 开头,00 的唯一写法是 00

特别说明:若基础 BB 超过 1010,假设数字间有空格分隔,避免混淆。

输入格式

输入第一行包含两个整数 BBqq (B2,q1B \geq 2, q \geq 1),用空格分隔,分别表示计数基础和查询次数。

第二行包含 BB 个整数 a0,a1,,aB1a_{0}, a_{1}, \ldots, a_{B-1} (ai1a_{i} \geq 1),用空格分隔,表示 Bajtuś 拥有的每个数字 ii 的卡片数量。

接下来的 qq 行,每行一个整数 kik_{i} (0ki10180 \leq k_{i} \leq 10^{18}),表示查询目标数的第 kik_{i} 位。

输出格式

输出 qq 行,第 ii 行给出目标数(用 BB 进制表示、能被 B1B-1 整除的最大数)的第 kik_{i} 位。位数从右往左数(最低位为 00)。若目标数位数少于 kik_{i},输出 1-1

样例

输入

33 33 11 11 11 00 11 22

输出

00 22 1-1

在三进制中,有一张 00、一张 11 和一张 22 的卡片,可拼出:03=0100_{3} = 0_{10}13=1101_{3} = 1_{10}23=2102_{3} = 2_{10}103=31010_{3} = 3_{10}123=51012_{3} = 5_{10}203=61020_{3} = 6_{10}213=71021_{3} = 7_{10}1023=1110102_{3} = 11_{10}1203=1510120_{3} = 15_{10}2013=1910201_{3} = 19_{10}2103=2110210_{3} = 21_{10}。能被 22 整除的有 030_{3}232_{3}20320_{3},最大数是 20320_{3}

附加样例

B=10B=10, ai=1a_{i}=1, q=10q=10, ki=i1k_{i}=i-1B=2B=2, a0=10000a_{0}=10000, a1=1a_{1}=1, q=10001q=10001, ki=i1k_{i}=i-1B=1000000B=1000000, ai=1a_{i}=1, q=1q=1, k1=999999k_{1}=999999

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务 附加限制 分值
11 B,ai,q100B, a_{i}, q \leq 100 3030
22 B,ai100B, a_{i} \leq 100, q100000q \leq 100000 2525
33 B1000B \leq 1000, ai1000000a_{i} \leq 1000000, q1000q \leq 1000
44 B,ai1000000B, a_{i} \leq 1000000, q100000q \leq 100000 2020