Cho số nguyên dương X có k chữ số, đổi tùy ý vị trí các chữ số của X ta thu được số Y.
Yêu cầu: Hãy tìm số Y nhỏ nhất.
Dữ liệu vào: Cho trong file văn bản DOISO.INP có cấu trúc như sau:
- Dòng 1: Ghi số nguyên dương k. (0
1 câu trả lời
Mình viết code C++ nhé:
#include <algorithm>
#include <fstream>
#include <string>
using namespace std;
int main()
{
//Chúng ta mở các file:
ifstream fin("DOISO.INP");
ofstream fout("DOISO.OUT");
//Vì số X quá lớn nên chúng ta phải dùng dạng xâu:
string X;
int k;
//Nhập vào dữ liệu:
fin >> k;
fin >> X;
//Dùng hàm sort() có sẵn trong thư viện, để đưa các chữ số nhỏ hơn đứng trước các chữ số lớn hơn:
sort(X.begin(), X.end());
//Loại bỏ các số 0 thừa ở đầu:
while ((X.length() > 1) && (X[0] == '0')) X.erase(0, 1);
//Trả về kết quả:
fout << X;
//Kết thúc:
return 0;
}
//Chúng ta không cần đóng file hay làm gì khác vì chương trình sẽ tự động dọn dẹp khi kết thúc.