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

Dãy Kerbal dễ tổn thương

Đề bài

Mô tả

Cho số nguyên m và một danh sách gồm n số nguyên phân biệt nằm trong đoạn [0,m1], gọi là các số bị cấm.

Hãy xây dựng một dãy số a1,a2,,ak thỏa mãn đồng thời các điều kiện sau:

  • Mỗi phần tử ai là số nguyên trong đoạn [0,m1].
  • Tất cả các tích tiền tố lấy dư cho m đều đôi một khác nhau. Tích tiền tố thứ i được định nghĩa là (a1·a2ai)modm.
  • Không có tích tiền tố nào (lấy dư cho m) trùng với một số bị cấm.
  • Độ dài k của dãy là lớn nhất có thể.

Nếu có nhiều dãy thỏa mãn, in ra một dãy bất kỳ.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm: số lượng số bị cấm và số m.
  • Nếu n>0, dòng thứ hai chứa n số nguyên phân biệt trong đoạn [0,m1], là các số bị cấm. Nếu n=0, dòng này không xuất hiện.

Dữ liệu ra

  • Dòng đầu in số nguyên k: độ dài dãy tìm được.
  • Dòng thứ hai in k số nguyên a1,a2,,ak cách nhau bởi dấu cách.

Ràng buộc

  • 0n<m2·105.
  • Các số bị cấm phân biệt và nằm trong đoạn [0,m1].

Ví dụ

Input Output Giải thích
3 10
1 2 9
6
3 9 2 4 8 0
Các tích tiền tố theo modulo 10[3,7,4,6,8,0]: đôi một khác nhau và không chứa số bị cấm nào trong {1,2,9}. Không thể đạt độ dài lớn hơn 6.
0 5 5
1 2 4 3 0
Không có số bị cấm. Các tích tiền tố theo modulo 5[1,2,3,4,0], phủ hết mọi giá trị nên độ dài tối đa là 5.

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