『MdOI R2』Mayuri
题目背景
「万由里……怎么会?为什么你要……」
『我是灵力的结晶体,实施了封印,我当然会消失,不是吗?』
「封印?但是你和我……」
『第一次见面不能封印吗?笨蛋,我可是从大家的灵力里出生的,怎么可能讨厌你?从一出生,我就爱着你。』
「万由里……」
『虽然我竭力不让自己去想,但我一定是很羡慕大家……』
「等一下,万由里,不要消失……」
『但是我还是有一件能向大家炫耀的事,只有我和士道一样……』
「一样?」
『我已经不再是只为了消失而出生的生命。因为我遇见了你……已经足够了。』
「万由里……」
『谢谢你,士道。 』
题目描述
在离开这个世界前,万由里想要寻找属于她的 Lucky Number。
万由里会给出一个数 a a a,以及一个长度为 b b b 的 01 串 S S S。
简单的说,她的 Lucky Number 是满足以下条件的正整数 n n n:
-
n n n 的位数为 b b b 且不含前导 0 0 0。
-
若 S S S 的第 i i i 位为 1 1 1,则 n n n 的前 i i i 位组成的数是 a a a 的倍数,否则 n n n 的前 i i i 位组成的数不是 a a a 的倍数。
对于一个数,前 i i i 位组成的数是指这个数前 i i i 个数码依次拼接形成的数。例如 312311 312311 312311 前 3 3 3 位组成的数为 312 312 312,前 5 5 5 位组成的数为 31231 31231 31231。
现在,请你帮助万由里计算一下,她的 Lucky Number 是多少。
由于满足条件的数可能会有多个,你需要输出最小的一个。若不存在,则请输出 -1
。
输入格式
输入数据由两行构成。
第一行两个整数 a , b a,b a,b,意义见题目描述。
第二行一个长度为 b b b 的字符串 S S S。
输出格式
一行,满足条件的最小的数
n
n
n。如果不存在满足条件的数,输出 -1
。
样例 #1
样例输入 #1
2 2
01
样例输出 #1
10
样例 #2
样例输入 #2
10 1
1
样例输出 #2
-1
样例 #3
样例输入 #3
6 6
110100
样例输出 #3
601210
提示
【帮助与提示】
为方便选手测试代码,本题额外提供一组附加样例供选手使用。
【样例解释】
对于样例一, 10 10 10 是 2 2 2 位数,且 10 10 10 的前 1 1 1 位组成的数 1 1 1 不是 2 2 2 的倍数,而前 2 2 2 位组成的数 10 10 10 是 2 2 2 的倍数。由于 10 10 10 已经是最小的两位数,故不存在比 10 10 10 更小的满足条件的数。
对于样例二,我们需要构造一个 1 1 1 位数,满足这个 1 1 1 位数整除 10 10 10。显然,这样的数不存在。
【数据范围】
本题采用捆绑测试
子任务编号 | a ≤ a \leq a≤ | b ≤ b\le b≤ | 分值 |
---|---|---|---|
Subtask 1 | 10 10 10 | $ 1$ | 20 20 20 |
Subtask 2 | $10 $ | 2 2 2 | 20 20 20 |
Subtask 3 | $10 $ | $ 6$ | 20 20 20 |
Subtask 4 | $ 2$ | $ 18$ | 20 20 20 |
Subtask 5 | $ 10$ | $ 10^5$ | 20 20 20 |
对于全部数据,保证
2
≤
a
≤
10
2\le a\le 10
2≤a≤10,
1
≤
b
≤
1
0
5
1\le b\le 10^5
1≤b≤105,
S
S
S 中只包含 0
和 1
。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容