Xâu min

Xem PDF




Thời gian:
Scratch 5.0s

Tác giả:
Dạng bài
Điểm: 1300 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho xâu \(S\) chứa các kí tự \(1 \ldots 9\) (\(|S| \leq 1000\) kí tự) và số nguyên \(K\) (\(1 \leq K \leq |S|\)). (\(|S|\) độ dài của xâu \(S\))

Yêu cầu: Chọn \(K\) kí tự trong xâu \(S\) theo thứ tự ban đầu để tạo thành số \(X\) gồm \(K\) chữ số có giá trị bé nhất.

Input

  • Dòng 1: Ghi số \(K\).
  • Dòng 2: Ghi xâu \(S\).

Output

  • Ghi một số duy nhất \(X\).

Example

Test 1

Input
3
89678982 
Output
672

Bình luận


  • -1
    dinhducanh47    3:54 p.m. 19 Tháng 9, 2024
    tự làm đi
    kakakaka
    

    • 0
      vietnammuonnam_mvn    6:36 p.m. 24 Tháng 8, 2024

      def smallest_number(K, S):
      stack = []
      n = len(S)

      for i in range(n):
          while stack and stack[-1] > S[i] and len(stack) - 1 + (n - i) >= K:
              stack.pop()
          if len(stack) < K:
              stack.append(S[i])
      
      return ''.join(stack)
      

      Đọc dữ liệu từ đầu vào

      import sys
      input = sys.stdin.read
      data = input().split()
      K = int(data[0])
      S = data[1]

      Tính kết quả và in ra

      print(smallest_number(K, S))


      • 2
        vovanviet2008    4:38 p.m. 1 Tháng 7, 2024

        ý tưởng dành cho bạn nào thích dp :

        • Gọi dp[i][j] là chữ số nhỏ nhắn gồm j kí tự khi đã chọn đến vị trí thứ i
        • suy ra ta có công thức dp như sau :
          TH 1 : chọn số thứ i + 1 : dp[i + 1][j + 1] = min(____,dp[i][j] + s[i + 1]) , điều kiện : j + 1 <= k
          TH 2 : không chọn số thứ i + 1 : dp[i + 1][j] = min(____,dp[i][j])

        • code mẫu cho bạn nào còn : https://ideone.com/CIbbBz


        • 1
          thuannguyen1972dn    7:47 p.m. 6 Tháng 5, 2024

          python:
          k = int(input())
          s = input()
          l = len(s) - k + 1
          r = 0
          ds = []
          for i in range(1, k + 1):
          so = 10
          n = 0
          for j in range(r, l):
          if int(s[j]) < so:
          so = int(s[j])
          n = j
          l += 1
          r = n + 1
          ds.append(str(so))
          kq=""
          for i in ds:
          kq+=i
          print(kq)


          • 0
            thanhlong2k9    7:12 p.m. 18 Tháng 3, 2024

            bài này dùng stack vẫn được mà đk mn


            • -3
              nguyenpaul1305    9:28 p.m. 19 Tháng 8, 2023

              sao sai vay ban


              • -2
                nguyentheanh2012    9:58 p.m. 11 Tháng 4, 2023

                ngôn ngữ gì vậy N7hoatt

                1 phản hồi

                • -17
                  thanhyl7a20    3:51 p.m. 12 Tháng 10, 2021

                  Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.


                  • -22
                    hongquanyl1    3:34 p.m. 22 Tháng 5, 2021

                    Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.


                    • -26
                      nqkts001    9:46 a.m. 22 Tháng 5, 2021

                      Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.

                      • 1 bình luận nữa