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

Mã PIN

Đề bài

Mô tả

Mã PIN là một xâu gồm đúng 4 chữ số (mỗi chữ số nằm trong khoảng 0..9). Mã PIN được phép bắt đầu bằng chữ số 0, ví dụ: 7013, 0000, 0990 đều là các mã PIN hợp lệ.

Polycarp có n thẻ ngân hàng, thẻ thứ i có mã PIN là pi. Polycarp muốn tất cả n mã PIN này đôi một khác nhau. Trong một bước, Polycarp chọn một thẻ, chọn một vị trí trong mã PIN của thẻ đó (từ 1 đến 4) và đổi chữ số ở vị trí đó thành một chữ số khác bất kì.

Hãy giúp Polycarp xác định số bước ít nhất cần thực hiện để n mã PIN trở nên đôi một khác nhau, đồng thời chỉ ra một cách đặt lại n mã PIN tương ứng.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (1t100) — số bộ dữ liệu.
  • Mỗi bộ dữ liệu bắt đầu bằng một dòng chứa số nguyên n (2n10) — số thẻ.
  • n dòng tiếp theo, mỗi dòng chứa một mã PIN pi độ dài đúng 4 chỉ gồm các chữ số.

Dữ liệu ra

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

  • Dòng đầu tiên là k — số bước thay đổi ít nhất.
  • n dòng tiếp theo là các mã PIN sau khi thay đổi, theo đúng thứ tự xuất hiện ở đầu vào. Các mã PIN này phải đôi một khác nhau và có thể nhận được từ các mã PIN ban đầu bằng tổng cộng không quá k bước.

Nếu có nhiều đáp án hợp lệ, in ra một đáp án bất kì.

Ràng buộc

  • 1t100
  • 2n10
  • Mỗi mã PIN có độ dài đúng 4 và chỉ gồm các chữ số.

Ví dụ

Input Output Giải thích
3
2
1234
0600
2
1337
1337
4
3139
3139
3139
3139
0
1234
0600
1
0337
1337
3
0139
1139
2139
3139
Bộ 1: hai mã PIN đã khác nhau nên không cần đổi.
Bộ 2: đổi chữ số đầu của một thẻ là đủ.
Bộ 3: phải đổi 3 trong 4 thẻ để cả 4 mã trở nên đôi một khác nhau.
1
3
1234
1234
1230
1
0234
1234
1230
Đổi chữ số đầu tiên của thẻ thứ nhất từ 1 thành 0.

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