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.

Author: buitrunghieu

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ức int tmp = i % 10;; ta gán về hướng bên phải của biến reverse bằng công thức reverse = reverse * 10 + tmp;. Sau khi có được giá trị cuối của reverse, nếu reverse\(=i\) thì tăng count 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ăng count, 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

There are no comments at the moment.