Chúng tôi được cung cấp một số nguyên và chương trình làm việc ở đây là đảo ngược các chữ số của số đó và thêm số đã đảo ngược vào số ban đầu và kiểm tra xem số kết quả có phải là palindrome hay không và quá trình này được lặp lại cho đến khi nó thực hiện. Điểm phá vỡ của quy trình là 1000 lần lặp và giá trị lớn hơn giá trị dài tối đa (Long.MAX_VALUE).
Ví dụ
Đầu vào - 1678
Đầu ra - Palindrome của đầu vào đã cho 1678 293392
Giải thích - Đầu tiên số đầu vào được đảo ngược và sau đó được thêm vào số ban đầu, sau đó nó được kiểm tra xem có palindrome không nếu nó không phải là palindrome thì quá trình tương tự được lặp lại trên số đã cập nhật. Điểm phá vỡ của quy trình là 1000 lần lặp và giá trị lớn hơn giá trị dài tối đa (Long.MAX_VALUE).
Đầu vào - 202021038
Đầu ra - Palindrome của đầu vào đã cho 202021038 1453553541
Giải thích - Đầu tiên số đầu vào được đảo ngược và sau đó được thêm vào số ban đầu, sau đó nó được kiểm tra xem có palindrome không nếu nó không phải là palindrome thì quá trình tương tự được lặp lại trên số đã cập nhật. Điểm phá vỡ của quy trình là 1000 lần lặp và giá trị lớn hơn giá trị dài tối đa (Long.MAX_VALUE).
Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau
-
Bên trong chức năng chính
-
Số đầu vào được chuyển vào phương thức tínhReverseandAdd (đầu vào)
-
-
Bên trong phương thức tínhReverseandAdd
-
Một biến số rev_number mới được giới thiệu
-
Một vòng lặp được lặp lại với số điều kiện <=max
-
Bên trong vòng lặp, số đảo ngược của số có được bằng cách chuyển số đó qua phương thức reverseNumber ()
-
Sau đó, số đảo ngược được thêm vào số đầu vào
-
Sau đó, số thu được sẽ được kiểm tra xem có palindrome hay không bằng cách chuyển số vào phương thức checkPalindrome () , Nếu có, số được in dưới dạng đầu ra cho người dùng.
-
Nếu số đó không phải là palindrome thì quá trình tương tự được lặp lại với số thu được cho đến khi thu được palindrome, nếu số kết quả lớn hơn giá trị dài tối đa thì không có palindrome có thể có trong phạm vi tồn tại số đã cho.
-
Ví dụ
import java.util.*; public class ReverseAdd{ static final long max = Long.MAX_VALUE; static long reverseNumber(long number){ long rev_number = 0; while (number > 0){ rev_number = rev_number * 10 + number % 10; number = number / 10; } return rev_number; } static boolean checkPalindrome(long number){ return (reverseNumber(number) == number); } static void calculateReverseandAdd(long number){ long rev_number = 0; System.out.println("Palindrome of the given input " + number); while (number <= max){ rev_number = reverseNumber(number); number = number + rev_number; if (checkPalindrome(number)){ System.out.println(number); break; } else if (number > max){ System.out.println("No possible palindromes for the input"); } } } public static void main(String[] args){ calculateReverseandAdd(1678); calculateReverseandAdd(2961); calculateReverseandAdd(202021038); } }
Đầu ra
Nếu chúng ta chạy đoạn mã trên, nó sẽ tạo ra Kết quả sau
Palindrome of the given input 1678 293392 Palindrome of the given input 2961 69696 Palindrome of the given input 202021038 1453553541