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.