trang chủ / đề bài / tb_tst_23_e

Cặp số nguyên tố cùng nhau

Đề bài

Mô tả

Bob có một dãy a gồm n số nguyên dương a1,a2,…,an.

Andy là bạn thân của Bob, cậu có một sở thích đặc biệt là mượn các con số của Bob về nhà để chơi. Trong m ngày tới, mỗi ngày Andy sẽ tới mượn Bob một con số hoặc trả lại Bob một con số cậu đã mượn trước đó. Ban đầu Andy chưa mượn số nào.

Tuy nhiên, có một điều kiện để Andy có thể mượn được các con số của Bob. Sau mỗi ngày, Bob đố Andy trong các con số cậu đang mượn, có bao nhiêu cặp số nguyên tố cùng nhau. Nói cách khác, Andy cần tính số cặp chỉ số i,j (i≠j) mà cậu đang mượn có gcd(ai,aj)=1. Mỗi cặp không phân biệt thứ tự, tức là (i,j) và (j,i) chỉ được tính một lần; hai chỉ số khác nhau có cùng giá trị 1 vẫn tạo thành một cặp vì gcd(1,1)=1.

Bạn hãy giúp Andy trả lời các câu đố này nhé.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n,m là độ dài của dãy số của Bob và số ngày (1≤n≤5·105,1≤m≤5·105).
  • Dòng thứ hai chứa n số nguyên dương a1,a2,…,an (1≤ai≤5·105).
  • m dòng tiếp theo, mỗi dòng chứa một số nguyên i (1≤i≤n). Nếu trước đó Andy chưa mượn số nguyên ai, Andy sẽ mượn số nguyên này ngay hôm đó, ngược lại cậu sẽ trả lại số nguyên này ngay hôm đó.

Dữ liệu ra

Gồm m dòng, dòng thứ i là đáp án cho câu đố trong ngày thứ i.

Ràng buộc

  • 1≤n,m≤5·105.
  • 1≤ai≤5·105.

Subtasks

  • Subtask 1 (20% số điểm): n,m≤100.
  • Subtask 2 (30% số điểm): n,m≤103.
  • Subtask 3 (50% số điểm): không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 5
1 2 3 4 5
1
2
5
4
2
0
1
3
5
3
Ngày đầu tiên Andy chỉ mượn Bob một số, vậy số cặp là 0. Ngày thứ hai, các cặp nguyên tố cùng nhau là (1,2). Ngày thứ ba là (1,2),(2,5),(1,5). Ngày thứ tư là (1,2),(2,5),(1,5),(1,4),(5,4). Ngày thứ năm Andy trả lại số thứ 2, còn (1,5),(1,4),(5,4).
6 5
2 3 4 6 8 9
3
2
6
5
2
0
1
2
4
2
Andy lần lượt mượn các số 4,3,9,8 rồi trả lại số 3. Sau ngày thứ tư các cặp là (4,3),(4,9),(3,8),(9,8) (viết theo giá trị); sau khi trả số 3 còn (4,9),(9,8).
3 4
1 1 2
1
2
3
1
0
1
3
1
Hai chỉ số 1 và 2 cùng có giá trị 1 nên tạo thành một cặp vì gcd(1,1)=1. Ngày thứ ba có ba cặp (1,2),(1,3),(2,3). Ngày thứ tư Andy trả lại số thứ 1, còn cặp (2,3).

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0