Editorial for C bài 5.E1: Số thuận nghịch
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Lời giải chi tiết
Để làm được bài này, trước hết ta cần hiểu được khái niệm về số thuận nghịch. Theo đó, số thuận nghịch là số khi đảo ngược thứ tự xuất hiện, ta nhận được số mới bằng số ban đầu.
Ví dụ như số 9, 121, 54345 là các số thuận nghịch, trong khi đó 12, 113 thì không.
Ý tưởng: Với mỗi số \(i\) đang xét, ta sử dụng một biến tạm thời, có giá trị là \(i\) sau khi đảo ngược lại. Nếu biến đó \(= i\) thì \(i\) là số thuận nghịch, ta cộng thêm 1 với biến đếm.
Truy vết: Thực hiện đoạn code tìm số đảo ngược 1 lần nữa, lần này để in ra các số thỏa mãn.
Các bước giải:
- Bước 1: Khai báo và nhập vào lần lượt 2 số nguyên \(l, r\).
- Bước 2: Khai báo biến
count
để đếm số lượng số thuận nghịch có trong đoạn từ \(l\) đến \(r\), với giá trị khởi tạo là \(0\). - Bước 3: Sử dụng vòng lặp để duyệt các số từ \(l\) đến \(r\), với mỗi số \(i\) đang được duyệt, ta tạo một biến
reverse
\(= 0\). Với mỗi chữ số của \(i\) từ phải sang trái, lấy bằng công thứcint tmp = i % 10;
; ta gán về hướng bên phải của biếnreverse
bằng công thứcreverse = reverse * 10 + tmp;
. Sau khi có được giá trị cuối củareverse
, nếureverse
\(=i\) thì tăngcount
thêm 1. - Bước 4: Sau khi duyệt xong, ta in ra giá trị cuối cùng của
count
và thực hiện lại bước 3 một lần nữa. Nhưng lần này thay vì tăngcount
, ta sẽ in ra luôn số \(i\) đang được xét.
Đăng ký khóa học: https://www.facebook.com/clblaptrinhfullhouse
SĐT liên hệ: 0372229686
Youtube: CLB Lập Trình Full House
Fullhouse dev đồng hành trên từng dòng code
Comments