Bài 2: Để giúp các em học sinh có kĩ năng lập trình tốt chuẩn bị cho kì thi học sinh giỏi tin học, thầy giáo cho các em bài tập sau:
Cho một xâu chỉ gồm các ký tự chữ cái thường trong bảng chữ cái tiếng anh và các chữ số từ 0 đến 9. Đoạn các ký tự số liên tiếp tạo thành một số nguyên. Ở mỗi đoạn ký tự số liên tiếp phải trích ra số lớn nhất có thể, mỗi số lấy ra không có các số 0 không có nghĩa
Ví dụ, với xâu là 05aab21bc3956cde488a các số được trích ra là 5, 21, 3956, 488.
Yêu cầu: Cho xâu S có độ dài không quá 100000 kí tự chỉ gồm các kí tự chữ cái thường và chữ số. Hãy viết chương trình tìm số bé nhất và lớn nhất trong các số được trích ra?
Dữ liệu vào cho trong tệp văn bản TIMSO.INP gồm một xâu S chỉ chứa các ký tự chữ cái thường và chữ số.
Kết quả đưa ra tệp văn bản TIMSO.OUT
Dòng 1 đưa ra số bé nhất tìm được.
Dòng 2 đưa ra số lớn nhất tìm được.
Ví dụ: TIMSO.INp.05aab21bc3956cde488 TIMSO.OUt 5 3956
3956
5
3956
Nếu TLE thì báo mình nhé.
#include <bits/stdc++.h>
using namespace std;
string MAX(string a, string b) {
while (*a.begin() == '0')
a.erase(a.begin());
while (*b.begin() == '0')
b.erase(b.begin());
if (a.size() < b.size()) return b;
if (a.size() > b.size()) return a;
for (int i = 0; i < a.size(); i++) {
if (a[i] > b[i]) return a;
if (a[i] < b[i]) return b;
}
return a;
}
string MIN(string a, string b) {
while (*a.begin() == '0')
a.erase(a.begin());
while (*b.begin() == '0')
b.erase(b.begin());
if (a.size() > b.size()) return b;
if (a.size() < b.size()) return a;
for (int i = 0; i < a.size(); i++) {
if (a[i] < b[i]) return a;
if (a[i] > b[i]) return b;
}
return a;
}
int main() {
freopen("TIMSO.inp", "r", stdin);
freopen("TIMSO.out", "w", stdout);
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
string s;
cin >> s;
int cur = 0;
string temp = "", ma = "", mi;
for (char c : s) {
if (isdigit(c)) {
temp += c;
}
else {
if (temp == "")
continue;
ma = MAX(ma, temp);
if (cur == 0) mi = temp, cur = 1;
else mi = MIN(mi, temp);
temp = "";
}
}
if (temp != "") {
ma = MAX(ma, temp);
if (cur == 0) mi = temp, cur = 1;
else mi = MIN(mi, temp);
}
cout << mi << '\n' << ma;
return 0;
}
Tin học là một ngành khoa học chuyên nghiên cứu quá trình tự động hóa việc tổ chức, lưu trữ, xử lý và truyền dẫn thông tin của một hệ thống máy tính cụ thể hoặc trừu tượng. Tin học bao hàm tất cả các nghiên cứu và kỹ thuật có liên quan đến việc mô phỏng, biến đổi và tái tạo thông tin. Hãy tận dụng sức mạnh của tin học để giải quyết các vấn đề và sáng tạo ra những giải pháp mới!
Lớp 8 - Năm thứ ba ở cấp trung học cơ sở, học tập bắt đầu nặng dần và sang năm lại là năm cuối cấp, áp lực lớn dần. Hãy chú ý đến sức khỏe, cân bằng giữa học và nghỉ ngơi để đạt hiệu quả tốt nhất!
Copyright © 2021 HOCTAPSGK