暴力解法
最直观的想法是严格按照题目描述进行模拟。对于每次查询 (p,k),我们从下标 p 开始遍历数组,逐个检查每个元素 ai 是否与 ap 的最大公约数不为 1。我们用一个计数器来记录满足条件的元素个数,当计数器达到 k 时,就找到了答案。
在一个长度为 n 的正整数序列 a1,a2,…,an 中(下标从 1 开始),我们称两个整数 x 和 y 是 共鸣 的,如果它们的最大公约数大于 1,即 gcd(x,y)>1。
现在有 q 个询问,每个询问给出两个整数 p 和 k。对于每个询问,你需要从位置 p 开始,向右依次检查每一个位置 i(p≤i≤n),统计满足 ap 与 ai 共鸣的 i 的个数。当计数达到第 k 个时,输出该位置的下标;如果扫描到末尾仍不足 k 个,则输出 −1。
数据范围:序列长度 n 和询问次数 q 均不超过 6×104,序列中的每个整数大小在 2 到 6×104 之间。
第一行包含两个整数 n 和 q,分别表示序列长度和询问次数。 第二行包含 n 个整数 a1,a2,…,an,表示序列中的元素。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.