Hướng dẫn giải của Quà tặng đặc biệt

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người làm lời giải.


Nộp code mẫu trước khi tự giải được bài tập là một hành vi có thể bị ban.

Tác giả: bachminhkhang

Ý tưởng:

  • Để tiện trong việc xử lí, ta có thể chuyển các số thành xâu.
  • Cách để lấy chữ số thứ ~i~ trong xâu ~s~: num = s[i] - '0'.

Lưu ý: So sánh hai xâu có chút khác với so sánh số bình thường:

  • VD: Khi so sánh hai xâu s1 = 99 và s2 = 100 thì sẽ trả về ~s1 \gt s2~ vì máy sẽ so sánh từng kí tự từ trái qua phải. Do đó cần phải chú ý khi code.

Code tham khảo

#include<bits/stdc++.h>

using namespace std;

const int N = 1e5 + 7;

int n, sum = 0;
string s[N], res;

int solve(string x) {
    int S = 0;
    for(auto &c : x){
        S += int(c) - 48;
    }
    return S;
}

bool cmp(string a, string b){
    while(int(a.size()) > int(b.size())) b = "0" + b;
    while(int(a.size()) < int(b.size())) a = "0" + a;
    return (a > b);
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    res = "";
    for(int i = 1; i <= n; ++i){
        cin >> s[i];
        int tmp = solve(s[i]);
        if(tmp == sum && cmp(s[i], res)){
            res = s[i];
        }
        if(tmp > sum){
            sum = tmp;
            res = s[i];
        }
    }
    cout << res;
    return 0;
}

Bình luận

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


Không có bình luận tại thời điểm này.

Hỗ Trợ CLAOJ
QR Code