Tìm số đảo ngược của một số C++

Bài 24. Tìm số đảo ngược trong C/C++

This entry is part 22 of 69 in the series Học C Không Khó

Tìm số đảo ngược của một số là một bài tập lập trình cơ bản. Bài tập này giúp các bạn luyện tập tư duy lập trình cũng như khả năng giải quyết các bài toán. Bài tập này có khá nhiều cách tiếp cận khác nhau. Hãy cùng Lập trình không khó đi tìm gợi ý và lời giải cho bài tập này nhé.

Tìm số đảo ngược của một số

Bài toán tìm số đảo ngược của một số

Trong ngôn ngữ lập trình C/C++. Nhập vào một số nguyên dương n từ bàn phím. In ra số đảo ngược của số n vừa nhập.

Ví dụ:

  1. Nhập n = 12345 -> Khi đó số đảo ngược của n = 54321.
  2. Nhập n == 12340 -> Khi đó số đảo ngược của n = 4321.
  3. Nhập n = 1000 -> Khi đó số đảo ngược của n = 1.

Nhận xét bài toán

  1. Nếu n là một số nguyên dương nhỏ, ta có thể tính toán trên kiểu int hoặc long long của C/C++
  2. Chú ý trường hợp có số 0 ở cuối(Tùy cách giải)
  3. Nếu n có nhiều chữ số(giả sử có thể lên tới vài nghìn chữ số). Khi đó chúng ta cần sử dụng mảng ký tự trong C hoặc kiểu string của C++ để xử lý.

Ý tưởng tìm số đảo ngược

Đối với số nhỏ, nằm trong phạm vi cho phép có kiểu dữ liệu số. Bạn có thể tìm số đảo ngược của một số sử dụng 1 trong 2 cách sau.

Cách 1:

Giả sử n = 12345. Khi đó ta có thể viết n = 1*105 + 2*104 + 3*103 + 4*102 + 5*101

Vậy số ngược lại của n = 54321 có thể viết thành 5*105 + 4*104 + 3*103 + 2*102 + 1*101

Nếu bạn để ý, chúng có sự trái ngược nhau. Bạn có thể lợi dụng tính chất này để tìm số đảo ngược.

Cách 2:

Lấy từng chữ số ở hàng đơn vị và in ra luôn. Ta có thể sử dụng 2 toán tử chia nguyên(/) và chia dư(%) của C/C++.

Chẳng hạn n = 12345.

Nếu bạn sử dụng cách này. Bạn cần lưu ý trường hợp có số 0 ở cuối. Vì khi đảo ngược, không cho phép có số 0 ở đầu.

Trong trường hợp tổng quát, bạn có thể sử dụng cách 3 này. Cũng rất đơn giản nhé.

Cách 3:

Đối với số lớn, có hàng nghìn đến hàng triệu ký tự. Khi đó bạn cần dùng string để lưu số này. Tất nhiên bạn vẫn có thể sử dụng cách này với số nhỏ. Khi đó, bài toán khá đơn giản, chỉ cần for ngược từ cuối chuỗi về đầu là xong. Nhưng cần lưu ý số 0 ở cuối nhé!

Code bài tập tìm số đảo ngược của 1 số

Lưu ý: Các bạn hãy cố gắng tự mình giải quyết bài toán trước khi xem đáp án.

châm ngôn tâm đắc của Nguyễn Văn Hiếu

Code dưới đây được Nguyễn Văn Hiếu Blog trình bày bằng ngôn ngữ lập trình C++.

Cách 1:

Code C:

Code C++:

Giải thích:

Cách 2:

Code C:

Code C++:

Giải thích:

Ở đây biến first có tác dụng đánh dấu có phải ta đang tìm số đầu tiên hay không. Nếu đang tìm số đầu tiên, ta chỉ in khi tmp khác giá trị 0. In được giá trị đầu tiên rồi thì gán first = false;. Trường hợp còn lại in ra bình thường.

Cách 3:

Code C++:

Giải thích:

Cách này thực hiện khá là đơn giản. Không cần tính toán phức tạp mà có thể chạy với số cực kỳ lớn. Có thể lên tới hàng triệu chữ số.

Lưu ý vì là string nên bạn cần kiểm tra kỹ càng số vừa nhập có hợp lệ không. Số hợp lệ là số không có số 0 ở đầu và chỉ gồm các ký tự số từ ‘0’ đến ‘9’.

Bạn có thể chạy thử với một số max lớn xem sao:

Kết luận

Như vậy, tôi đã kết thúc phần trình bày về bài toán tìm số đảo ngược của một số trên ngôn ngữ lập trình C++. Hi vọng bài viết mang lại cho bạn những kiến thức bổ ích và thú vị.

Chúc các bạn học tốt!

Similar Posts

Subscribe
Notify of
guest
5 Bình luận
Inline Feedbacks
View all comments