Nội dung chính
Bài tập Java - Tìm số thuận nghịch trong java
Đề bài: Viết chương trình tìm các số thuận nghịch có sáu chữ số từ 100000 đến 999999. Một số được gọi là số thuận nghịch nếu nó bằng số đảo ngược, tức là ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch.
Lời giải
Cách 1: Duyệt các số từ 100000 đến 999999, rồi phân tách số hiện tại thành các chữ số đơn lẻ để kiểm tra tính thuận nghịch.
File: BaiTap11.java
package vn.kienthuclaptrinh.baitap; import java.util.ArrayList; import java.util.List; /** * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số. * * @author kienthuclaptrinh.net */ public class BaiTap11 { public static int DEC_10 = 10; /** * main * * @param args */ public static void main(String[] args) { int count = 0; // in ra màn hình các số thuận nghịch có 6 chữ số for (int i = 100000; i < 1000000; i++) { if (isThuanNghich(i)) { System.out.println(i); count++; } } System.out.println("Tổng các số thuận nghịch có 6 chữ số: " + count); } /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ public static boolean isThuanNghich(int n) { List<Integer> listNumbers = new ArrayList<>(); // phân tích số n thành các chữ số và lưu vào listNumbers do { listNumbers.add(n % DEC_10); n = n / DEC_10; } while (n > 0); // kiểm tra tính thuận nghịch int size = listNumbers.size(); for (int i = 0; i < (size/2); i++) { if (listNumbers.get(i) != listNumbers.get(size - i - 1)) { return false; } } return true; } }
Kết quả:
100001 101101 102201 ... 997799 998899 999999 Tổng các số thuận nghịch có 6 chữ số: 900
Cách 2: sử dụng thuật toán + StringBuilder trong java
/** * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số. * * @author kienthuclaptrinh.net */ package vn.kienthuclaptrinh.baitap; public class BaiTap11_2 { public static final int[] DEC_ARR_1_9 = {1, 2, 3, 4, 5, 6, 7, 8, 9}; public static final int[] DEC_ARR_10 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; /** * main * * @param args */ public static void main(String[] args) { int count = 0; StringBuilder sb; // in ra màn hình các số thuận nghịch có 6 chữ số for (int a : DEC_ARR_1_9) { for (int b : DEC_ARR_10) { for (int c : DEC_ARR_10) { sb = new StringBuilder(); sb.append(a).append(b).append(c).append(c).append(b).append(a); System.out.println(sb.toString()); count++; } } } System.out.println("Tổng các số thuận nghịch có 6 chữ số: " + count); } }
Kết quả:
100001 101101 102201 ... 997799 998899 999999 Tổng các số thuận nghịch có 6 chữ số: 900
Cách 3: Chuyển đổi n thành chuỗi String rồi kiểm tra tính thuận nghịch.
package vn.kienthuclaptrinh.baitap; /** * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số. * * @author kienthuclaptrinh.net */ public class BaiTap11_3 { /** * main * * @param args */ public static void main(String[] args) { int count = 0; // in ra màn hình các số thuận nghịch có 6 chữ số for (int i = 100000; i < 1000000; i++) { if (isThuanNghich(i)) { System.out.println(i); count++; } } System.out.println("Tổng các số thuận nghịch có 6 chữ số: " + count); } /** * Kiểm tra số thuận nghịch * * @param n: số nguyên dương * @return true là số thuận nghịch * false không là số thuận nghịch */ public static boolean isThuanNghich(int n) { // chuyển đổi số n thành một chuỗi String String numberStr = String.valueOf(n); // kiểm tra tính thuận nghịch int size = numberStr.length(); for (int i = 0; i < (size/2); i++) { if (numberStr.charAt(i) != numberStr.charAt(size - i - 1)) { return false; } } return true; } }
Kết quả:
100001 101101 102201 ... 997799 998899 999999 Tổng các số thuận nghịch có 6 chữ số: 900