Hướng dẫn giải của LOOP18: Số đọc ngược


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.

Hướng dẫn giải

Cho hai số nguyên dương ~a, b~ (~1 \le a, b \le 10^9~). Đọc ngược mỗi số (từ phải sang trái), rồi đưa ra số có giá trị lớn hơn.

Cách làm

Hàm ~dao\_nguoc~ đảo ngược một số: lấy chữ số cuối cùng bằng phép chia lấy dư ~x \% 10~, ghép nó vào kết quả bằng ~ketqua \times 10 + chữ số~, rồi bỏ chữ số cuối bằng ~x / 10~. Lặp lại đến khi ~x = 0~.

Chương trình đảo ngược cả ~a~ và ~b~, sau đó so sánh và in ra số lớn hơn. Lưu ý: khi đảo ngược, các chữ số 0 ở cuối số gốc sẽ biến mất, ví dụ ~100~ đọc ngược thành ~1~.

Nên dùng kiểu ~long long~ để tránh tràn số.

#include <bits/stdc++.h>
using namespace std;

// Đọc ngược một số: lấy chữ số cuối cùng rồi ghép vào kết quả
long long dao_nguoc(long long x) {
    long long ketqua = 0;
    while (x > 0) {
        ketqua = ketqua * 10 + x % 10;
        x = x / 10;
    }
    return ketqua;
}

int main() {
    long long a, b;
    cin >> a >> b;
    // Đọc ngược cả hai số rồi so sánh
    // Nhớ dùng long long để tránh tràn số
    long long ra = dao_nguoc(a);
    long long rb = dao_nguoc(b);
    if (ra > rb) {
        cout << ra << "\n";
    } else {
        cout << rb << "\n";
    }
    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.