Hướng dẫn giải của [200 đề thầy Đức] Bài 56: 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 và b. Theo quy tắc mới, mỗi số được đọc ngược từ phải sang trái. In ra số có giá trị lớn hơn sau khi đọc ngược.

Cách làm
  • Viết hàm đảo ngược số: lần lượt lấy chữ số hàng đơn vị (x % 10) và ghép vào kết quả (kq = kq * 10 + chữ số), rồi bỏ chữ số đó khỏi x (x / 10).
  • Đảo ngược a được ra, đảo ngược b được ra.
  • So sánh hai kết quả và in ra số lớn hơn.

Ví dụ: 734 đảo thành 437, 893 đảo thành 398. Số lớn hơn là 437. Các số có thể tới 10^9 nên dùng long long.

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

// Đảo ngược thứ tự các chữ số của số x
long long daoNguoc(long long x) {
    long long kq = 0;
    while (x > 0) {
        kq = kq * 10 + x % 10;
        x /= 10;
    }
    return kq;
}

int main() {
    long long a, b;
    cin >> a >> b;
    // Đọc ngược từng số theo quy tắc mới của Tý
    long long ra = daoNguoc(a);
    long long rb = daoNguoc(b);
    // In ra số có giá trị lớn hơn
    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.