Từ Y đến Y

Đề bài

Mô tả

Cho một đa tập gồm n chữ cái tiếng Anh thường (có thể có chữ trùng nhau). Mỗi chữ cái ban đầu được coi là một xâu độ dài 1. Ta thực hiện n1 lần thao tác sau:

  • Chọn hai xâu bất kỳ st trong đa tập, xóa chúng khỏi đa tập, rồi thêm xâu nối s+t vào.

Chi phí của một lần thao tác bằng:

c=azf(s,c)·f(t,c)

trong đó f(x,c) là số lần chữ cái c xuất hiện trong xâu x.

Cho số nguyên không âm k, hãy tạo ra bất kỳ đa tập khác rỗng gồm không quá 100000 chữ cái tiếng Anh thường sao cho tổng chi phí nhỏ nhất của toàn bộ quá trình (sau n1 thao tác) đúng bằng k. Có thể chứng minh rằng đáp án luôn tồn tại.

Nhận xét: nếu chữ cái c xuất hiện mc lần trong đa tập, thì tổng chi phí nhỏ nhất luôn bằng c(mc2), không phụ thuộc thứ tự ghép.

Dữ liệu vào

Một dòng duy nhất chứa số nguyên không âm k (0k100000) — chi phí nhỏ nhất cần đạt được.

Dữ liệu ra

In ra một xâu khác rỗng gồm không quá 100000 chữ cái tiếng Anh thường, biểu diễn đa tập thỏa mãn yêu cầu (thứ tự các chữ trong xâu không quan trọng — đa tập là tập hợp không thứ tự).

Nếu có nhiều đáp án, in ra bất kỳ đáp án nào.

Ví dụ

Input Output Giải thích
12 aaaaabbcc Đa tập {a, a, a, a, a, b, b, c, c}: (52)+(22)+(22)=10+1+1=12.
3 aaa Đa tập {a, a, a}: (32)=3.
0 a Đa tập một phần tử {a}: (12)=0. Không có thao tác nào được thực hiện.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0