NUMTRANS - Trò chơi ghép số

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Tèo và Tí chơi thân với nhau, biết Tí học rất giỏi môn Toán nên một hôm Tèo đố Tí bài toán:

Cho ~n~ số nguyên dương ~a_1, a_2, …, a_n~. Hãy ghép các số đó lại với nhau để được số nguyên dương lớn nhất.

Ví dụ: Với ~3~ số ~12~, ~907~, ~91~ ta có ~6~ cách ghép được ~6~ số là: ~1290791, 1291907, 9071291, 9079112, 9112907, 9190712~. Trong đó số lớn nhất là ~9190712~.

Tất nhiên là bài toán này không thể làm khó Tí được nhưng vì còn bận học bài nên Tí muốn nhờ các bạn viết chương trình giải quyết bài toán trên.

Input

  • Dòng đầu chứa số nguyên dương ~n~;
  • Dòng thứ hai chứa ~n~ số nguyên dương ~a_1, a_2, …, a_n~. Hai số liên tiếp cách nhau một dấu cách.

Giới hạn:

  • ~1 ≤ n ≤ 100; 1 ≤ a_i ≤ 10^5~.
  • Có ~50\%~ số test có ~n ≤ 10~.

Output

  • Ghi ra số nguyên dương lớn nhất ghép được.

Sample

Input #1
3
12 907 91
Output #1
9190712

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 0
    minhtai2013vn  đã bình luận lúc 8, Tháng 4, 2026, 12:43

    code đúng cho anh em #include <bits/stdc++.h> using namespace std; string a[1000]; int n,i; int main() { cin>>n; for(i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+1+n,greater<string>()); for(i=1;i<=n;i++) cout<<a[i]; }


  • 0
    anhtungkaitotv  đã bình luận lúc 5, Tháng 3, 2026, 8:04

    Cách ghép lại r sort theo string tht ra ko đúng đâu ae =))


  • 0
    congtyluuthaibao1978  đã bình luận lúc 26, Tháng 11, 2025, 14:38

    include <bits/stdc++.h>

    using namespace std; bool cmp(const string &a, const string &b) { return a+b>b+a; } int main() { int n; cin>>n; vector<string>v(n); for(int i=0;i<n;i++) { cin>>v[i]; } sort(v.begin(),v.end(),cmp); for(string s : v) { cout<<s; } }


  • 0
    manhton01012013  đã bình luận lúc 15, Tháng 11, 2025, 7:38 chỉnh sửa

    bài trên nha xem kĩ phàn cuối

    include <bits/stdc++.h>

    using namespace std; int main() { ios::syncwithstdio(false); cin.tie(NULL); cout.tie(NULL); int n; cin >> n; vector<string> a(n); for(int i = 0; i < n; i++){ cin >> a[i]; } sort(a.begin(), a.end(), greater<string>()); for(auto i : a){ cout << i; } return 0; } cái này dễ mà đơn giản nè (xem để tham khảo ko khuyến kích chép) <3 làm tốt nhé


  • 0
    phucan1402  đã bình luận lúc 10, Tháng 10, 2025, 13:28

    sort string để các string ghép với nhau to nhất ở đầu

    #include <iostream>
    #include <climits>
    #include <algorithm>
    #include <map>
    #include <vector>
    #include <sstream>
    using namespace std;
    const int maxn = 1e5;
    using ll = long long;
    bool cmp(string a, string b) {
        return a + b > b + a;
    }
    void AC() {
        int n; cin >> n;
        vector<string> a(n);
        for(int i = 0; i < n; i++) {
            cin >> a[i];
        }
        sort(a.begin(), a.end(), cmp);
        string ans = "";
        for(string s : a) {
            ans+=s;
        }
        cout << ans;
    } 
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        AC();
        return 0;
    }
    

  • -1
    vixhthih  đã bình luận lúc 25, Tháng 7, 2025, 12:36

    bai nay lam sao may ong


  • 3
    tognoek  đã bình luận lúc 27, Tháng 8, 2023, 2:29

    sort string