Trò chơi

Xem dạng PDF

Gửi bài giải

Điểm: 0,01 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: TROCHOI.INP
Output: TROCHOI.OUT

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

Một công ty có tổ chức trò chơi, tặng ~N~ gói quà đã được chuẩn bị theo giá trị phần quà từ thấp đến cao, để tri ân cho ~N~ khách hàng. Công ty đó đã chuẩn bị 1 chiếc hộp đựng ~N~ mảnh giấy, mỗi mảnh giấy được bí mật ghi một mã hóa gồm nhiều kí tự số và chữ. Mỗi khách hàng được chọn ~1~ mảnh giấy trong chiếc hộp đó. Em hãy viết chương trình tặng quà từ thấp đến cao theo số lượng các kí tự số của mã hóa trong tờ giấy, nếu số lượng kí tự số trong mã hóa bằng nhau thì khách hàng chọn trước được quà trước.

Input

Vào từ file TROCHOI.INP có cấu trúc như sau:

  • Dòng đầu tiên chứa số nguyên dương ~N~ với (~0 < N \le 10^4~)

  • ~N~ dòng tiếp theo, mỗi dòng chứa một mã hóa không dài quá ~255~ kí tự tương ứng cho từng khách hàng.

Output

Ghi ra file TROCHOI.OUT gồm:

  • Thứ tự tặng quà của trò chơi này cho ~N~ khách hàng trên.

Sample Input 1

5
N123456Cao
A89Dat
G2Chuc
L512Ket
E3689Qua

Sample Output 1

G2Chuc
A89Dat
L512Ket
E3689Qua
N123456Cao

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • -1
    thanhbinhbtlc2012  đã bình luận lúc 13, Tháng 12, 2025, 2:52 sửa 3

    lo pls code full


  • 0
    vinhtrankyvblc  đã bình luận lúc 24, Tháng 11, 2025, 15:06

    sao nộp lại full WA nhỉ

    include <bits/stdc++.h>

    using namespace std; long long n; string s; pair <long long,string> pa[10005]; long long socs(string s) { long long kq=0; for (char c:s) { if (isdigit(c)) kq++; } return kq; } int main() { freopen("TROCHOI.INP","r",stdin); freopen("TROCHOI.OUT","w",stdout); iosbase::syncwithstdio(0); cin.tie(0); cout.tie(0); cin>>n; for (long long i=1;i<=n;++i) { cin>>s; pa[i]=makepair(socs(s),s); } sort (pa+1,pa+1+n); for (long long i=1;i<=n;++i) { cout<<pa[i].second<< "\n"; } }


  • 0
    tranvanb  đã bình luận lúc 18, Tháng 11, 2025, 15:09

    include <bits/stdc++.h>

    using namespace std; bool cmpnum (string a, string b){ int Counta = 0; int Countb = 0; for (int i = 0; i < a.size(); i++){ if (a[i] >= '0' && a[i] <= '9'){ Counta++; } } for (int i = 0; i < b.size(); i++){ if (b[i] >= '0' && b[i] <= '9'){ Countb++; } } if (Counta != Countb) return Counta < Countb; return false; } int main() { int n; freopen ("TROCHOI.INP", "r", stdin); freopen ("TROCHOI.OUT", "w", stdout); cin >> n; string mang[n];

    for (int i = 0; i < n; i++){
        cin >> mang[i];
    }
    sort (mang, mang + n, cmpnum);
    for (int i = 0; i < n; i++){
        cout << mang[i] << endl;
    }
    

    }

    mn giải thích giúp e vì sao code e sai đc không ạ


  • -3
    luuhoanggia2011  đã bình luận lúc 24, Tháng 8, 2025, 12:53

    cho toi hoi la cach bai nay sap xep la sap xep kieu gi vay mn ? y toi la , toi dung sort thi no noi ket qua sai hoac dung nhung khong theo yeu cau cua bai ay mn.


  • 1
    lvnphong12qb  đã bình luận lúc 24, Tháng 8, 2025, 7:49

    uhm code?

    include <bits/stdc++.h>

    using namespace std;

    bool cmp(const string& a, const string& b) { int ad = 0, bd = 0; for (auto i : a) if (isdigit(i)) ad++; for (auto i : b) if (isdigit(i)) bd++; return (ad<bd); }

    int main() { freopen("TROCHOI.inp","r",stdin); freopen("TROCHOI.out","w",stdout); int n; cin>>n; vector<string> a(n); for (int i = 0; i < n; i++) cin>>a[i]; stable_sort(a.begin(),a.end(),cmp); for (auto i : a) cout<<i<<endl; }


  • 4
    meo8110b  đã bình luận lúc 8, Tháng 8, 2025, 6:47

    SPOILER

    có thể dùng hàm isdigit trong thư viện <cctype> để kiểm tra xem một kí tự (char)có phải số hay không. cú pháp

    std::isdigit(char)
    

    dùng hàm stable_sort trong thư viện <algorithm> để có thể sắp xếp mà vẫn giữ thứ tự ( tức là nếu bằng nhau thì chuỗi nào xuất hiện trước sẽ được ưu tiên đứng trước). Cú pháp cơ bản của stable_sort

    std::stable_sort(begin,end,ham_so_sanh);
    

    trong đó thì chúng ta có thể tự code một hàm so sánh riêng để đáp ứng đề bài. Lưu ý hàm phải trả về kiểu bool, tham số phải là 2 phần tử
    ví dụ như

    bool custom(int a,int b){
        return a>b;
    }
    

    hàm này khi được truyền vào stable_sort sẽ sắp xếp mảng theo thứ tự lớn đến bé. Tức là khi hàm trả về true, a sẽ đứng trước b và ngược lại.
    Tổng hợp lại những gì vừa nãy, chúng ta có thể giải bài này bằng cách tạo một vector lưu các giá trị ,tiếp theo tạo một hàm so sánh để so sánh số lượng kí tự là số trong hai chuỗi a và b, rồi truyền hàm này vào stable_sort, sau đó in ra kết quả.
    Một lưu ý nữa, với bài này không nên dùng hàm sort trong thư viện <algorithm> vì hàm này không giữ nguyên thứ tự đối với các phần tử trùng