Tìm số anh cả

Xem PDF

Điểm: 120 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho số nguyên dương \(n\). Gọi \(S\) là tập hợp tất cả các số nguyên dương được tạo thành từ các chữ số của số nguyên \(n\). Số "anh cả" được định nghĩa là số lớn nhất trong tập \(S\)

Yêu cầu: Cho số nguyên dương \(n(0\le n\le 10^{100})\). Hãy in ra số "anh cả" cần tìm.

Input

  • Dòng thứ nhất chứa số \(t(1\le t\le 20)\) - Thể hiện số testcase

  • \(t\) dòng tiếp theo, mỗi dòng chứa số nguyên dương \(n(0\le n\le 10^{100})\)

Output

  • Ứng với mỗi testcase, in ra đáp án cần tìm.

Example

Test 1

Input
2
1254
3225
Output
5421
5322

Bình luận


  • 1
    penistone    9:26 p.m. 26 Tháng 9, 2023 đã chỉnh sửa

    SPOILER ALERT!

    Xin nhắc nhở rằng đây là gợi ý của mình, các bạn chỉ nên đọc khi không có cách làm nào khác

    Ta có 4 bước để làm bài này như sau:

    • B1: nhập xâu
    • B2: chuyển sâu vừa nhập thành mảng hoặc chuỗi các số/kí tự
    • B3: sắp xếp từ lớn đến bé
    • B4: in ra kết quả

    Code hướng dẫn (accepted code, C++)

    #define sortd(v,cmp) sort((v).begin(),(v).end(),(cmp)) //để code ngắn gọn hơn
    #define FOR(i,l,r,n) for((i)=(l); (i)<=(r); (i)+=(n))
    using namespace std;
    bool cmp(int a, int b) //hàm này giúp sắp xếp giảm dần
    {
        return a>b;
    }
    void sortstr(string s) //hàm xử lí xâu
    {
        vector<int> v; int i; //sử dụng vector để lưu giá trị
        FOR(i,0,s.size()-1,1) v.pb(s[i]-48); //có thể sử dụng mảng số hoặc kí tự
        sortd(v,cmp); //sắp xếp giảm dần
        FOR(i,0,v.size()-1,1) cout<<v[i]; //in ra kết quả
        cout<<endl;
    }
    

    *Admin có thể xóa tin nhắn này nếu cần thiết

    • 8 bình luận nữa