Đ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
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)
bài này dùng stack vẫn được mà đk mn
sao sai vay ban
ngôn ngữ gì vậy N7hoatt
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở.
HINT
Ý TƯỞNG: để chọn ra \(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 thì ta cần ưu tiên các kí tự đứng trước nhỏ nhất có thể, sau đó từ vị trí kí tự đó trong xâu tìm các kí tự tiếp theo, nếu có nhiều kí tự nhỏ nhất thì ta chọn kí tự xuất hiện đầu tiên (để có thêm nhiều lựa chọn cho các kí tự sau)
CÁCH LÀM:
\(1.\) ta cho i chạy từ 1 đến K (để lấy ra K chữ số)
\(2.\) cho j chạy từ \(start\)( \(start\) lúc đầu bằng 0) cho đến \(end\) ( \(end\)lúc đầu bằng \(s.size()-K+1\))
\(3.\) xét trong đoạn này kí tự nhỏ nhất và lưu vào \(min\), mỗi lần xét nếu kí tự bé hơn \(min\) thì đặt \(start=j+1\)
\(4.\) in biến \(min\), tăng biến \(end\) lên 1 đơn vị
\(5.\) lặp lại các bước \(2,3,4\) cho đến khi hết thõa mãn \(1\)
Reference AC CODE||\(O(n)\)time||\(O(|S|)\)space||Xử lý xâu