Hướng dẫn giải của 35. Chữ số lớn nhất và nhỏ nhất (RMMDIGIT - )


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 viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
1. Ý tưởng giải quyết
  • Vì tập chữ số chỉ thuộc đoạn ~[0, 9]~:
    • Để tìm chữ số lớn nhất: Khởi tạo biến lon = 0 (giá trị nhỏ nhất có thể của một chữ số).
    • Để tìm chữ số nhỏ nhất: Khởi tạo biến nho = 9 (giá trị lớn nhất có thể của một chữ số).
  • Duyệt qua từng chữ số cs = n % 10:
    • Cập nhật số lớn nhất: lon = max(lon, cs); (hoặc dùng câu lệnh if (cs > lon) lon = cs;).
    • Cập nhật số nhỏ nhất: nho = min(nho, cs); (hoặc dùng câu lệnh if (cs < nho) nho = cs;).
  • In ra hai giá trị lon và nho cách nhau bởi một dấu cách.
2. Mã nguồn mẫu C++
#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    cin >> n;

    int lon = 0;
    int nho = 9;

    while (n > 0) {
        int cs = n % 10;
        if (cs > lon) lon = cs;
        if (cs < nho) nho = cs;
        n /= 10;
    }

    cout << lon << " " << nho;
    return 0;
}

Đang tải...