Nén Mảng GCD

Đề bài

Mô tả

Cho mảng a gồm 2n số nguyên dương. Bạn cần nén a thành mảng b độ dài n−1 như sau:

  • Loại bỏ chính xác 2 phần tử bất kỳ khỏi a.
  • Sau đó, lặp lại cho đến khi a rỗng: chọn hai phần tử bất kỳ trong a, xoá khỏi a và thêm tổng của chúng vào b.

Mảng b thu được phải có gcd của tất cả các phần tử lớn hơn 1. Đảm bảo luôn tồn tại cách thực hiện.

In ra các thao tác đã thực hiện (không cần in hai phần tử bị loại bỏ ban đầu).

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (1≤t≤10) — số lượng test.
  • Mỗi test gồm hai dòng:
    • Dòng 1: số nguyên n (2≤n≤1000).
    • Dòng 2: 2n số nguyên a1,a2,…,a2n (1≤ai≤1000).

Dữ liệu ra

Với mỗi test, in ra n−1 dòng. Dòng thứ i chứa hai số nguyên — chỉ số (đánh số từ 1) của hai phần tử trong a được dùng ở thao tác thứ i.

Tất cả 2n−2 chỉ số phải đôi một phân biệt.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 1≤t≤10
  • 2≤n≤1000
  • 1≤ai≤1000

Ví dụ

Input Output Giải thích
2
3
1 2 3 4 5 6
2
5 7 9 10
1 3
2 4
1 2
Test 1: cặp (1,3)→1+3=4, (2,4)→2+4=6. gcd(4,6)=2.
Test 2: cặp (1,2)→5+7=12. gcd(12)=12>1.
1
5
1 3 3 4 5 90 100 101 2 3
1 2
3 5
8 10
4 6
Bài toán có nhiều đáp án; ví dụ này tạo các tổng 1+3=4,3+5=8,101+3=104,4+90=94 và gcd(4,8,104,94)=2.

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