Bạn chưa đăng nhập. Vui lòng đăng nhập để hỏi bài
Lê Thị Vân Giang

Tèo đang cố gắng gây ấn tượng với một cô gái. Nhưng cô gái không thể hiện bất kỳ dấu hiệu quan tâm nào với anh ta. Vì vậy, người bạn thân nhất của anh đã đề nghị anh tặng một chuỗi Grove cho cô. Chuỗi Grove là một chuỗi có độ dài lẻ chỉ bao gồm các bảng chữ cái chữ thường được sắp xếp theo cách sao cho giá trị X của nó là nhỏ nhất có thể. X được tính như sau:

        + Với mọi kí tự có trong xâu, nó có giá trị được tính như sau: Tính K là khoảng cách từ vị trí của kí tự này đến tâm của chuổi. Rồi lấy K nhân với mã ASCII của kí tự này.

        + X là tổng giá trị của tất cả các kí tự có trong xâu.

Ví dụ: Cho chuỗi: aaa. Giá trị của chuổi là  X = 1*97 + 0*97 + 1*97 = 194.

        Vì vậy, với một chuỗi có độ dài lẻ chỉ bao gồm các bảng chữ cái viết thường, hãy tìm một hoán vị của chuỗi đã cho sao cho X nhỏ nhất có thể. Và nếu có nhiều chuỗi như vậy thì hãy in chuỗi nhỏ nhất theo từ vựng.

Đầu vào :

Chứa một chuỗi có độ dài lẻ chỉ bao gồm các bảng chữ cái viết thường. Độ dài không quá một triệu. 

Đầu ra :

in kết quả mong muốn trong các dòng riêng biệt.
Gia Huy
10 tháng 7 2023 lúc 22:13

def order_chain(chain):
  def order(chars, k):
    char_values = [ord(char) for char in chars]
    k = k if k > len(char_values) else char_values[k % len(char_values)]
    return k * sum(char_values)

  def char_order(x, chars):
    k = ord(x)
    char_values = [ord(char) for char in chars]
    if x < k and x in char_values:
      return k
    return -1

  def get_smallest_k(chain):
    k = -1
    for i in range(len(chain)):
      k, _ = min(chain[i], k)
    
    return k

  return order(chain, get_smallest_k(chain))

def search_chain(chain):
  chain_length = set()
  for i in range(len(chain)):
    if i in chain_length:
      return ord('a')
  chain_length.add(i)
  return search_chain(chain[:i]) or search_chain(chain[i+1:]) + or - 1

def main():
  chain = input().lower()
  print(order_chain(search_chain(chain)))

if __name__ == '__main__':
  main()

Lê Thị Vân Giang
10 tháng 7 2023 lúc 22:16

pascal nha mn

Gia Huy
10 tháng 7 2023 lúc 22:38

Pascal đây, không nói sớm: )

program GroveChain;

function order_chain(chars: char): integer;
var
    k: integer;
begin
    for i := 1 to length(chars) do
    begin
        k := ord(chars[i]) - (ord(chars[i]) mod len(chars));
        if result < k then
        begin
            result := k;
        end;
    end;
end;

function char_order(c: char; chars: char): integer;
var
    k: integer;
begin
    k := ord(c);
    for i := 0 to length(chars) do
    begin
        if c = chars[i] then
        begin
            k := i;
            exit;
        end;
    end;
    result := -1;
end;

function find_smallest_k(s: string): integer;
var
    k: integer;
begin
    k := 0;
    for i := 1 to length(s) do
    begin
        k := k + ord(s[i]) - (ord(s[i]) mod length(s));
    end;
    repeat do
    begin
        k := k;
        for i := 1 to length(s) do
        begin
            if k <= ord(s[i]) then
            begin
                k := ord(s[i]) - (ord(s[i]) mod length(s));
                exit;
            end;
        end;
        k := k + 1;
    end;
    until k < length(s);
    result := k;
end;

function find_smallest_chain(s: string): string;
var
    i: integer;
    j: integer;
    k: integer;
begin
    result := ''
    for i := 1 to length(s) do
    begin
        j := i;
        k := find_smallest_k(s);
        result := s[i] + result;
        for j := i+1 to length(s) do


Các câu hỏi tương tự
Phạm trọng Thành
Xem chi tiết
phạm tú
Xem chi tiết
bang
Xem chi tiết
Lala
Xem chi tiết
Lala
Xem chi tiết
Lê Chiêu Nguyên	Vũ
Xem chi tiết
Lê Thị Vân Giang
Xem chi tiết
Lala
Xem chi tiết
Do Ngoc Thao My
Xem chi tiết