CF1553G.Common Divisor Graph

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Consider a sequence of distinct integers a1,,ana_1, \ldots, a_n , each representing one node of a graph. There is an edge between two nodes if the two values are not coprime, i. e. they have a common divisor greater than 11 .

There are qq queries, in each query, you want to get from one given node asa_s to another ata_t . In order to achieve that, you can choose an existing value aia_i and create new value an+1=ai(1+ai)a_{n+1} = a_i \cdot (1 + a_i) , with edges to all values that are not coprime with an+1a_{n+1} . Also, nn gets increased by 11 . You can repeat that operation multiple times, possibly making the sequence much longer and getting huge or repeated values. What's the minimum possible number of newly created nodes so that ata_t is reachable from asa_s ?

Queries are independent. In each query, you start with the initial sequence aa given in the input.

输入格式

The first line contains two integers nn and qq ( 2n1500002 \leq n \leq 150\,000 , 1q3000001 \leq q \leq 300\,000 ) — the size of the sequence and the number of queries.

The second line contains nn distinct integers a1,a2,,ana_1, a_2, \ldots, a_n ( 2ai1062 \leq a_i \leq 10^6 , aiaja_i \neq a_j if iji \ne j ).

The jj -th of the following qq lines contains two distinct integers sjs_j and tjt_j ( 1sj,tjn1 \leq s_j, t_j \leq n , sjtjs_j \neq t_j ) — indices of nodes for jj -th query.

输出格式

Print qq lines. The jj -th line should contain one integer: the minimum number of new nodes you create in order to move from asja_{s_j} to atja_{t_j} .

输入输出样例

  • 输入#1

    3 3
    2 10 3
    1 2
    1 3
    2 3

    输出#1

    0
    1
    1
  • 输入#2

    5 12
    3 8 7 6 25
    1 2
    1 3
    1 4
    1 5
    2 1
    2 3
    2 4
    2 5
    3 1
    3 2
    3 4
    3 5

    输出#2

    0
    1
    0
    1
    0
    1
    0
    1
    1
    1
    1
    2

说明/提示

In the first example, you can first create new value 23=62 \cdot 3 = 6 or 1011=11010 \cdot 11 = 110 or 34=123 \cdot 4 = 12 . None of that is needed in the first query because you can already get from a1=2a_1 = 2 to a2=10a_2 = 10 .

In the second query, it's optimal to first create 66 or 1212 . For example, creating 66 makes it possible to get from a1=2a_1 = 2 to a3=3a_3 = 3 with a path (2,6,3)(2, 6, 3) .

In the last query of the second example, we want to get from a3=7a_3 = 7 to a5=25a_5 = 25 . One way to achieve that is to first create 67=426 \cdot 7 = 42 and then create 2526=65025 \cdot 26 = 650 . The final graph has seven nodes and it contains a path from a3=7a_3 = 7 to a5=25a_5 = 25 .

首页