trang chủ / bài tập / decryptn

Giải mã

Đề bài

Mô tả

Cho một hợp số n. Ta viết tất cả các ước của n lớn hơn 1 lên một vòng tròn, mỗi ước đúng một lần. Thứ tự ban đầu của các ước trên vòng tròn là do ta tự chọn.

Mỗi bước, ta được chọn hai số kề nhau trên vòng tròn và chèn BCNN (bội chung nhỏ nhất) của chúng vào giữa hai số đó. Số vừa chèn trở thành một phần tử của vòng tròn và tham gia vào quan hệ kề như mọi số khác. Ta có thể lặp lại thao tác này bao nhiêu lần tùy ý.

Vòng tròn được gọi là đã giải mã nếu mọi cặp số kề nhau đều không nguyên tố cùng nhau.

Hãy chọn thứ tự ban đầu sao cho số bước cần thực hiện là ít nhất, và cho biết số bước ít nhất đó.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số lượng bộ dữ liệu.
  • Mỗi dòng trong t dòng tiếp theo chứa một hợp số n.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra hai dòng:

  • Dòng thứ nhất: thứ tự ban đầu của các ước lớn hơn 1 trên vòng tròn (phần tử cuối cùng được coi là kề với phần tử đầu tiên).
  • Dòng thứ hai: số bước ít nhất cần thực hiện với thứ tự đó.

Nếu có nhiều thứ tự cùng cho số bước ít nhất, in ra thứ tự bất kỳ.

Ràng buộc

  • 1t100
  • 4n109, n là hợp số
  • Tổng số ước của n trên tất cả các bộ dữ liệu không vượt quá 2·105

Ví dụ

Input Output Giải thích
3
6
4
30
2 3 6
1
2 4
0
10 2 30 6 3 15 5
0
Với n=6 chỉ có ba ước 2,3,6; dù xếp thế nào thì 23 cũng kề nhau nên phải chèn BCNN(2,3)=6, vòng tròn thành 2,6,3,6. Với n=4 hai ước 2,4 đã không nguyên tố cùng nhau. Với n=30 có thể xếp cả bảy ước mà không cần bước nào.
1
18
6 2 18 3 9
0
Các cặp kề nhau là (6,2),(2,18),(18,3),(3,9),(9,6), mọi cặp đều có ước chung lớn hơn 1.

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.400 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.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0