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

Băm xáo trộn

Đề bài

Mô tả

Một dịch vụ web lưu mật khẩu dưới dạng "hash" theo thuật toán sau:

  1. Lấy mật khẩu p (gồm các chữ cái Latin in thường), hoán vị ngẫu nhiên các kí tự trong p để được xâu p (p có thể trùng p).
  2. Sinh ngẫu nhiên hai xâu chữ cái Latin in thường s1s2 (mỗi xâu có thể rỗng).
  3. Hash thu được là h=s1+p+s2 (nối xâu).

Ví dụ, với p= abacaba, có thể có p= aabcaab, s1= zyx, s2= kjh, dẫn tới h= zyxaabcaabkjh.

Cho mật khẩu p và hash h, hãy kiểm tra xem h có thể là hash hợp lệ của p hay không.

Bạn cần xử lý t test độc lập.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t (1t100) — số lượng test.
  • Với mỗi test:
    • Dòng thứ nhất chứa xâu khác rỗng p gồm các chữ cái Latin in thường, độ dài không quá 100.
    • Dòng thứ hai chứa xâu khác rỗng h gồm các chữ cái Latin in thường, độ dài không quá 100.

Dữ liệu ra

Với mỗi test, in ra một dòng chứa YES nếu h có thể là hash của p, và NO trong trường hợp ngược lại.

Ví dụ

Input Output Giải thích
5
abacaba
zyxaabcaabkjh
onetwothree
threetwoone
one
zzonneyy
one
none
twenty
ten
YES
YES
NO
YES
NO
Test 1: h= zyx + aabcaab + kjh, với aabcaab là một hoán vị của abacaba. Test 2: s1s2 đều rỗng, threetwoone là hoán vị của onetwothree. Test 4: s1= n, s2 rỗng, và p trùng p.
2
abacaba
zyxaabcaabkjh
onetwothree
threetwnone
YES
NO
Test 2: trong threetwnone không có chữ o nhưng onetwothree có hai chữ o, nên không thể là hoán vị.

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