JOI 2007 - Anagram

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1300 (p) Thời gian: 5.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Một anagram của một xâu là xâu thu được bằng cách sắp xếp lại các ký tự của xâu đó. Xâu ban đầu cũng được tính là một anagram của chính nó. Chẳng hạn, EARTHHEART đều là anagram của HEART.

Một xâu có thể có nhiều anagram khác nhau. Ví dụ, các anagram phân biệt của IOI, theo thứ tự từ điển tăng dần, là IIO, IOI, OII.

Cho một xâu, hãy xác định vị trí của nó trong danh sách tất cả các anagram phân biệt của chính nó, sắp theo thứ tự từ điển tăng dần. Các vị trí được đánh số bắt đầu từ \(1\). Chẳng hạn, EARTH đứng thứ \(28\), còn HEART đứng thứ \(55\) trong danh sách anagram tương ứng.

Dữ liệu vào

Đọc từ đầu vào chuẩn một dòng chứa xâu cần xét.

Dữ liệu ra

Ghi ra đầu ra chuẩn một số nguyên trên một dòng: vị trí của xâu đã cho trong danh sách các anagram phân biệt theo thứ tự từ điển.

Ràng buộc

  • Xâu chỉ gồm các chữ cái tiếng Anh in hoa và có không quá \(20\) ký tự.
  • Chú ý tránh tràn số: \(2^{32}<20!<2^{63}\).

Phân nhóm

Các bộ dữ liệu được chấm độc lập; không có điều kiện ràng buộc riêng cho từng nhóm.

  • Các bộ dữ liệu \(01\)\(05\): \(20\) điểm mỗi bộ, tổng cộng \(100\) điểm; áp dụng toàn bộ ràng buộc trên.

Ví dụ

Ví dụ 1

Input
HEART
Output
55

Ví dụ 2

Input
IOI
Output
2

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: