E. Mike and Foam(容斥原理)

E. Mike and Foam

Mike is a bartender at Rico's bar. At Rico's, they put beer glasses in a special shelf. There are n kinds of beer at Rico's numbered from 1 to n. i-th kind of beer has ai milliliters of foam on it.

E. Mike and Foam(容斥原理)_第1张图片

Maxim is Mike's boss. Today he told Mike to perform q queries. Initially the shelf is empty. In each request, Maxim gives him a number x. If beer number x is already in the shelf, then Mike should remove it from the shelf, otherwise he should put it in the shelf.

After each query, Mike should tell him the score of the shelf. Bears are geeks. So they think that the score of a shelf is the number of pairs (i, j) of glasses in the shelf such that i < j and where is the greatest common divisor of numbers a and b.

Mike is tired. So he asked you to help him in performing these requests.

Input

The first line of input contains numbers n and q (1 ≤ n, q ≤ 2 × 105), the number of different kinds of beer and number of queries.

The next line contains n space separated integers, a1, a2, ... , an (1 ≤ ai ≤ 5 × 105), the height of foam in top of each kind of beer.

The next q lines contain the queries. Each query consists of a single integer integer x (1 ≤ x ≤ n), the index of a beer that should be added or removed from the shelf.

Output

For each query, print the answer for that query in one line.

Sample test(s)
Input
5 6
1 2 3 4 6
1
2
3
4
5
1
Output
0
1
3
5
6
2


题意简单易懂,我就不说了。。。

题解:题目可以转化为,在一个动态的集合中,没加入一个数,或取出一个数后,剩下的数中互质的有多少对,注意是无序的。 因为在题目的数据范围内质因子的数量很少,复杂度基本上可以忽略不计,所以我们可以对每一个新加进去的数,或者取出来的数进行质因子分解。然后通过容斥原理,先算出集合中有多少个与其不互质,这个很容易算出来吧! (如果想不出来可以看下我的代码,就是通过一个数组来计数,挺简单)。知道了不互质的,自然就知道互质了辣! 然后就答案减去或者加上互质的数就可以了。 时间复杂度估计10^7级别。

你可能感兴趣的:(容斥原理)